将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 })之类的东西,但没有运气。

将LINQ查询缩小到一列

如果您不需要中间结果,更有效的方法是编写单个查询

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);