LINQ to SQL选择Distinct by Multiple Columns并返回整个实体
本文关键字:返回 实体 Columns Multiple SQL to 选择 Distinct by LINQ | 更新日期: 2023-09-27 18:08:01
我正在使用第三方数据库,需要为我正在研究的特定市场选择一组不同的数据。每个市场的数据都是相同的,所以把它全部拉进来是多余的,我不想在它周围硬编码任何逻辑,因为我们正在与供应商一起解决这个问题,但是我们需要一个修复程序,它将与供应商的修复程序以及数据库当前的方式一起工作,因为它可能需要一段时间才能修复。
我不想按任何东西分组,因为我想获得最低级别的数据,但我不想要任何冗余数据。我当前的查询看起来类似于这个…
determinantData = (from x in dbContext.Datas
where x.Bar.Name.Equals(barName) &&
x.Something.Name.Equals(someName) &&
FooIds.Contains(x.Foo.Id) &&
x.Date >= startDate &&
x.Date <= endDate
select x).Distinct();
这不是我所期望的。我想通过三个属性选择不同的记录,比如Foo
, Bar
和Something
,但返回整个对象。我如何使用LINQ做到这一点?
您可以使用group by
与您想要区分的属性,然后选择每个组的第一项:
determinantData = (from x in dbContext.Datas
where x.Bar.Name.Equals(barName) &&
x.Something.Name.Equals(someName) &&
FooIds.Contains(x.Foo.Id) &&
x.Date >= startDate &&
x.Date <= endDate
group x by new { x.Foo, x.Bar, x.Something } into market
select market).Select( g=> g.First());