将LINQ查询缩小到一列
本文关键字:一列 LINQ 查询 缩小 | 更新日期: 2023-09-27 18:06:19
我试图设置这样的查询。一开始我选择的是完整的对象。
var values = (from p in Products
where p.LockedSince == null
select p);
然后我选择添加额外的where
if(SupplierId > 0)
values = values.Where(p => p.SupplierId == SupplierId);
最后,我不再需要完整的产品对象了,我只需要一个简单的单列有序列表(p.LocationName
)。像这样:
values = values.Select( p.LocationName ).Distinct().OrderBy(x => x);
我试过Select(loc => new { p.LocationName })
之类的东西,但没有运气。
如果您不需要中间结果,更有效的方法是编写单个查询
var values = (from p in Products
where (p.LockedSince == null && (SupplierId <=0 || p.SupplierId == SupplierId))
select p.LocationName).Distinct().OrderBy(x => x);
values = values.Select( p => p.LocationName ).Distinct().OrderBy(x => x);