有没有办法在通用集合上执行 Console.WriteLine()
例子:
列表 a 有:
a.Key[0]: apple
a.Value[0]: 1
a.Key[1]: bold
a.Value[2]: 2
有没有办法使用 LINQ 写出列表内容:键、值?
a = a.OrderByDescending(x => x.Value));
foreach (KeyValuePair pair in car)
{
Console.WriteLine(pair.Key + ' : ' + pair.Value);
}
我想写一个 Linq / 查询而不是 foreach...
是否可以?
如果你仔细想想,你并不是真的在询问。查询本质上是询问有关数据的问题,然后以特定方式排列答案。不过,您对该答案所做的操作与实际生成它是分开的。
在您的情况下,查询的“问题”部分是“我的数据是什么?” (因为您没有应用Where子句),“排列”部分是“根据每个项目的值按降序排列”。你得到一个IEnumerable<T>
当枚举时,它会吐出你的“答案”。
此时,您实际上需要对答案执行某些操作,因此您使用foreach
循环,然后对每个项目执行您需要的任何操作(就像您在问题中所做的那样)。我认为这是一个完全合理的方法,它可以清楚地表明发生了什么。
如果您绝对必须使用 LINQ 查询,您可以这样做:
a.OrderByDescending(x => x.Value).ToList().ForEach(x => { Console.WriteLine(x.Key + ' : ' + x.Value); });
EDIT: This 博客文章 http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx有更多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)