下面是一个方法来此的一步一步的演练。
要设置样本数据(根据你的问题),我们有OneAddress
类:
class OneAddress
{
public string PostalNr { get; set; }
public string SortType { get; set; }
}
这是一个Dictionary
所以我们接下来有:
var myAddresses = new Dictionary<int, OneAddress>();
myAddresses.Add(1, new OneAddress() { PostalNr = "123", SortType = "101" });
myAddresses.Add(2, new OneAddress() { PostalNr = "124", SortType = "110" });
myAddresses.Add(3, new OneAddress() { PostalNr = "125", SortType = "101" });
myAddresses.Add(4, new OneAddress() { PostalNr = "126", SortType = "110" });
myAddresses.Add(5, new OneAddress() { PostalNr = "127", SortType = "110" });
首先,一个基本的LINQ查询以获取所有字典条目:
var results = from a in myAddresses
select a;
这将返回一个IEnumerable<T>
其中T
是KeyValuePair<int, OneAddress>
(与我们的词典相同)。
如前所述,你只希望PostalNr
不是KeyValuePair
所以我们的查询更改为:
的Value
包含OneAddress
对象,我们只能得到我们需要(在IEnumerable<T>
)的财产。
但是,这是为集合中的所有项目;我们现在可以添加我们的滤镜。
var results = from a in myAddresses
where a.Value.SortType == "110"
select a.Value.PostalNr;
现在我们得到了PostalNr
在字典其中SortType
是"110"
任何OneAddress
,那只剩结果打印到控制台屏幕。
在其他的答案强调,Console.WriteLine()
不字符串枚举列表的工作,所以我们可以列举的项目:
foreach (string postalNr in results)
{
Console.WriteLine(postalNr);
}
或者(如果我们使用System.Collections.Generic)我们可以做一个行:
results.ToList().ForEach(p => Console.WriteLine(p));
尝试张贴在计算器 – 2014-09-12 09:15:14
http://meta.stackexchange.com/a/129632/165773 – gnat 2014-09-12 09:27:54
@TomSquires ** [“跨过帐皱眉.. 。“](http://meta.stackexchange.com/tags/cross-posting/info)** – gnat 2014-09-12 10:11:46