使用linq查询输出列表/其他数据结构
本文关键字:其他 数据结构 列表 输出 linq 查询 使用 | 更新日期: 2023-09-27 18:01:30
是否有办法在通用集合上执行Console.WriteLine()例子:列表a有:
a.Key[0]: apple
a.Value[0]: 1
a.Key[1]: bold
a.Value[2]: 2
是否有一种方法来写出列表的内容:键,值使用LINQ?
a = a. orderbydescent (x => x. value));
foreach (KeyValuePair pair in car)
{
Console.WriteLine(pair.Key + ' : ' + pair.Value);
}
代替foreach我想写一个Linq/query…这可能吗?
仔细想想,其实你并不是在请求一个查询。查询本质上是问一个关于数据的问题,然后以特定的方式安排答案。但是,您对该答案所做的操作与实际生成它是分开的。
在您的示例中,查询的"问题"部分是"我的数据是什么?"(因为您没有应用Where子句),而"安排"部分是"根据每个项目的值按降序排列"。你得到一个IEnumerable<T>
,当枚举时,它会吐出你的"答案"。
foreach
循环枚举它,然后对每个项目执行所需的操作(就像您在问题中所做的那样)。我认为这是一个非常合理的方法,它清楚地表明发生了什么。
如果你必须使用LINQ查询,你可以这样做:
a.OrderByDescending(x => x.Value).ToList().ForEach(x => { Console.WriteLine(x.Key + ' : ' + x.Value); });
编辑:这个博客有更多。
有一个扩展方法,它本身循环遍历值:
myList.ForEach(a => {
// You have access to each element here, but if you try to debug, this is only one function and won't be iterated in debug mode.
});
还可以使用link的聚合函数将字符串连接在一起:
Console.WriteLine(myList.Aggregate((a, b) => string.Format("{0}, {1}", a, b)));
您可以使用LINQ构造字符串,然后将其输出到控制台例子:
var s=string.Join(Environment.NewLine, a.Select(x=>string.Format("{0}:{1}",x.Key,x.Value)).ToArray());
Console.WriteLine(s);