C# Lambda表达式,用于搜索条件并仅返回1个最新结果
我有一个包含供应商数据的列表,我想使用SupplierID、非活动供应商和仅1个最新结果来搜索它 所以我有:C# Lambda表达式,用于搜索条件并仅返回1个最新结果,c#,.net,linq,lambda,C#,.net,Linq,Lambda,我有一个包含供应商数据的列表,我想使用SupplierID、非活动供应商和仅1个最新结果来搜索它 所以我有: List<Supplier> filteredList = this.toList(); filteredList.OrderByDescending(m => m.ModifiedDatetime).FirstOrDefault(); filteredList.Where(f => (f.Active == false && f.
List<Supplier> filteredList = this.toList();
filteredList.OrderByDescending(m => m.ModifiedDatetime).FirstOrDefault();
filteredList.Where(f => (f.Active == false && f.FieldId == SupplierFieldID))
.ToList<Supplier>();
但我做不到这一点;请提供帮助。您可以在一条语句中完成此操作,将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);
您可以在一条语句中完成此操作,将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);
您需要链接LINQ表达式,如下所示:
var filteredList = unfilteredData
.Where(f => f.Active == false && f.FieldId == SupplierFieldID)
.OrderByDescending(m => m.ModifiedDatetime)
.FirstOrDefault();
您不需要收费表,因为您需要的是单个项目,而不是列表;这就是FirstOrDefault所做的。如果您需要最后一项,您需要按照与原始订购条件相反的顺序订购。例如,如果希望条目具有最新修改日期,则需要按降序进行排序。需要链接LINQ表达式,如下所示:
var filteredList = unfilteredData
.Where(f => f.Active == false && f.FieldId == SupplierFieldID)
.OrderByDescending(m => m.ModifiedDatetime)
.FirstOrDefault();
您不需要收费表,因为您需要的是单个项目,而不是列表;这就是FirstOrDefault所做的。如果您需要最后一项,您需要按照与原始订购条件相反的顺序订购。例如,如果希望条目具有最新修改日期,则需要按降序进行排序。您可以将lambda传递到对FirstOrDefault的调用中,并去掉Where here。unfilteredData.OrderByDescendingm=>m.ModifiedDatetime.FirstOrDefaultf=>f.Active==false&&f.FieldId==SupplierFieldID@PrestonGuillot正确,除非在这种情况下,需要对整个列表进行排序。假设过滤显著减少了条目的数量,一个单独的原因可能是出于性能原因。我个人认为这是早熟的优化,并且宁愿选择一个具有筛选条件的单个选择器来进行可读性,但是我的评论无论如何都是一个挑剔的东西。非常感谢你的好意。如果我想在函数中使用您的代码,我应该使用什么样的数据类型来返回结果?我在StackOverflow方面还是新手,感谢您分享信息:您可以将lambda传递到对FirstOrDefault的调用中,并去掉此处的Where。unfilteredData.OrderByDescendingm=>m.ModifiedDatetime.FirstOrDefaultf=>f.Active==false&&f.FieldId==SupplierFieldID@PrestonGuillot正确,除非在这种情况下,需要对整个列表进行排序。假设过滤显著减少了条目的数量,一个单独的原因可能是出于性能原因。我个人认为这是早熟的优化,并且宁愿选择一个具有筛选条件的单个选择器来进行可读性,但是我的评论无论如何都是一个挑剔的东西。非常感谢你的好意。如果我想在函数中使用你的代码,我应该使用什么样的数据类型来返回结果?我在StackOverflow方面还是新手,感谢分享信息:嗨,米奇,非常感谢你的好意。如果我想在函数中使用您的代码,我应该使用什么样的数据类型来返回结果?无论您列出什么样的数据类型,都非常感谢Mitch。我还是新手,需要更多的时间来适应Lambda表达式…:嗨,米奇,非常感谢你的好意。如果我想在函数中使用您的代码,我应该使用什么样的数据类型来返回结果?无论您列出什么样的数据类型,都非常感谢Mitch。我还是新手,需要更多的时间来适应Lambda表达式…: