1

我有一个包含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>();

但我无法完成这项工作;请帮忙。

4

2 回答 2

4

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

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

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

于 2013-02-26T02:01:39.023 回答
1

您可以在一个语句中执行此操作,将 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); 
于 2013-02-26T02:01:12.403 回答