我有一个包含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>();
但我无法做到这一点;请帮忙。
答案 0 :(得分:4)
您需要链接LINQ表达式,如下所示:
var filteredList = unfilteredData
.Where(f => f.Active == false && f.FieldId == SupplierFieldID)
.OrderByDescending(m => m.ModifiedDatetime)
.FirstOrDefault();
您不需要ToList()
,因为您需要单个项目,而不是列表;这就是FirstOrDefault()
的作用。如果您需要最后一项,则需要按照原始订购条件的相反顺序进行订购。例如,如果您希望条目具有最新修改日期,则需要按降序排序(如您所做)。
答案 1 :(得分: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);