我正在使用第三方数据库,需要为我正在研究的特定市场选择一组不同的数据。每个市场的数据都是相同的,因此将其全部引入是多余的,并且我不想硬编码围绕它的任何逻辑,因为我们正在与供应商合作解决问题,但我们需要一个修复程序与供应商合作修复以及数据库当前的方式,因为修复程序可能需要一段时间才能生效。
我不想按任何内容进行分组,因为我想获取最低级别的数据,但我不想要任何冗余数据。我当前的查询看起来与此类似......
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
, and 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());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)