Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda表达式,用于搜索条件并仅返回1个最新结果_C#_.net_Linq_Lambda - Fatal编程技术网

C# Lambda表达式,用于搜索条件并仅返回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.

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

所以我有:

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表达式…: