【发布时间】:2014-02-26 00:01:14
【问题描述】:
我在 C# 中遇到 linq 查询问题。我为我的两个列表/集合编写内部连接:
var InnerJoin =
from itemA in listA
join itemB in listB
on itemA equals itemB
select new { itemA };
它适用于这个:
var listA = new List<string>() {"aaaa", "bbbb", "cccc", "dddd"};
var listB = new List<string>() { "zzzz", "bbbb"};
但我想将此应用于我的字典
var parametrsSelected = new Dictionary<string, string>()
{
{"kind", "favorite data"}
};
var parametrsAll = new Dictionary<string, string>()
{
{"kind", "Null"}, {"id","Null"}, {"type","Null"}
};
var InnerJoinParam =
from itemA in parametrsAll
join itemB in parametrsSelected
on itemA.Key equals itemB.Key
select new { itemB };
if (InnerJoinParam.Count() == 0)
return -1;
else
{
parametrsAll.Clear();
foreach (var pair in InnerJoinParam)
{
parametrsAll.Add(pair.itemB.Key, pair.itemB.Value);
}
}
但是我有一个错误:InnerJoinParam.Count() 返回一个Count = 1,但是 foreach 循环没有执行。并按照循环执行操作。为什么它不起作用。
【问题讨论】:
-
快速提示,任何时候你都可以
someVar.Count() == 0,你几乎总是可以用!someVar.Any()替换它,它会更快(someVar.Count() != 0变成someVar.Any())
标签: c# linq foreach inner-join