c# - 如何使用 LINQ 返回包含 List<> 中最新项目的 List<>

标签 c# linq tuples

我有以下元组列表:

var allXmlUsers = new List<(string login, string email, string createdOn)>();
allXmlUsers.Add(("thompson", "sdfsd@dkfjdkf.com", "2015-03-04 20:32:04"));
allXmlUsers.Add(("dupont", "asdfdfd@dkfjdkf.com", "2017-03-04 20:32:04"));
allXmlUsers.Add(("james", "dfsdfs33@dkfjdkf.com", "2016-03-04 20:32:04"));

我想用 List<> 替换它只有最近的项目,例如“杜邦”。

我可以像这样返回一个元组对象:

var single = (from x in allXmlUsers orderby x.createdOn descending select x).FirstOrDefault();

然后我返回一个 List<>像这样重新排序:

var list = from x in allXmlUsers orderby x.createdOn descending select x;

但是我如何返回 List<>只包含一个元组,即最近的元组,像这样?

//allXmlUsers = ((from x in allXmlUsers orderby x.createdOn descending select x).FirstOrDefault()).ToList();
//(error: cannot resolve symbol to List)

最佳答案

您可以使用Take 方法只从可枚举中取出1个元素

var single = (from x in allXmlUsers orderby x.createdOn descending select x)
             .Take(1)
             .ToList();

编辑

上面的代码片段将返回一个空列表(其中一个长度为 0),这可能是所需的行为,但您可能还想返回一个包含单个 null 值的列表。如果是这样,您可以使用 DefaultIfEmpty 方法

var single = (from x in allXmlUsers orderby x.createdOn descending select x)
             .Take(1)
             .DefaultIfEmpty()
             .ToList();

关于c# - 如何使用 LINQ 返回包含 List<> 中最新项目的 List<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50739888/

相关文章:

C# Linq OrderBy 基于条件

python - 如何将元组中的列表列表转换为 python 中的列表列表?

python - 有没有一种方法可以在不使用 Python 中的 for 循环的情况下在元组中查找项目?

c# - 绑定(bind) DataGridTemplateColumn

c# - 如何捕获 Visual Studio 中库的缺失?

c# - 如何使用 LINQ 加入、分组和选择?

c# - 有没有更短的解决方案可以从 LINQ 中选择?

Scala 元组函数组合

c# - 我的 User 模型是否应该继承 MembershipUser

c# - CompositeWPF 是否支持多个窗口/外壳?