我试图基于共同的查找值将两个字典集合连接在一起.
var idList = new Dictionary<int, int>();
idList.Add(1, 1);
idList.Add(3, 3);
idList.Add(5, 5);
var lookupList = new Dictionary<int, int>();
lookupList.Add(1, 1000);
lookupList.Add(2, 1001);
lookupList.Add(3, 1002);
lookupList.Add(4, 1003);
lookupList.Add(5, 1004);
lookupList.Add(6, 1005);
lookupList.Add(7, 1006);
// Something like this:
var q = from id in idList.Keys
join entry in lookupList on entry.Key equals id
select entry.Value;
Run Code Online (Sandbox Code Playgroud)
上面的Linq语句只是一个例子,不能编译.对于idList中的每个条目,根据匹配的Keys从lookupList中提取值.
结果应该是来自lookupList(1000,1002,1004)的值列表.
使用Linq最简单的方法是什么?
Amy*_*y B 15
from id in idList.Keys
where lookupList.ContainsKey(id)
let value1 = idList[id]
let value2 = lookupList[id]
select new {id, value1, value2}
Run Code Online (Sandbox Code Playgroud)
或者,更经典
from kvp1 in idList
join kvp2 in lookupList on kvp1.Key equals kvp2.Key
select new {key = kvp1.Key, value1 = kvp1.Value, value2 = kvp2.Value}
Run Code Online (Sandbox Code Playgroud)
查询中的错误是范围界定:
from a in theAs
join b in theBs on (leftside) equals (rightside)
Run Code Online (Sandbox Code Playgroud)
a在左侧区域范围内.b在右侧区域范围内.
| 归档时间: |
|
| 查看次数: |
14908 次 |
| 最近记录: |