Lambda表达式,以带条件搜索并仅返回1个最新结果

本文关键字:返回 1个 最新 结果 搜索 表达式 条件 Lambda | 更新日期: 2023-09-27 18:01:00

我有一个包含Supplier数据的列表,我想使用SupplierID、非活动供应商和只有1个最新结果来搜索它。

所以我有:

List<Supplier> filteredList = this.toList();    
filteredList.OrderByDescending(m => m.ModifiedDatetime).FirstOrDefault();    
filteredList.Where(f => (f.Active == false && f.FieldId == SupplierFieldID))
            .ToList<Supplier>();

但我做不到;请帮忙。

Lambda表达式,以带条件搜索并仅返回1个最新结果

您需要链接您的LINQ表达式,如下所示:

var filteredList = unfilteredData
    .Where(f => f.Active == false && f.FieldId == SupplierFieldID)
    .OrderByDescending(m => m.ModifiedDatetime)
    .FirstOrDefault();

您不需要ToList(),因为您需要的是单个项目,而不是列表;这就是CCD_ 4所做的。如果您需要最后一件商品,您需要按照原始订购条件的相反顺序订购。例如,如果您想要最新修改日期的条目,则需要按降序排序(就像您所做的那样(。

您可以在一条语句中完成此操作,将LINQ运算符链接在一起:

var filteredList = myList.Where(f => f.Active == false && f.FieldId == SupplierFieldID)
                         .OrderByDescending(m => m.ModifiedDatetime)
                         .Take(1);

或者正如@Preston Guillot所建议的,更短的形式:

var filteredList = unfilteredData
            .OrderByDescending(m => m.ModifiedDatetime)
            .FirstOrDefault(f => f.Active == false && f.FieldId == SupplierFieldID);