reg*_*tar 2 .net c# linq collections
说我有两个List<KeyValuePair<string, string>>
a和b,其中a =
"one", "N",
"two", "N",
"three", "N"
Run Code Online (Sandbox Code Playgroud)
和b =
"one", "Y"
"two", "N"
Run Code Online (Sandbox Code Playgroud)
我想做一个左外连接,但是Value
如果b中有一个条目则取b的值,所以结果应为=
"one", "Y" <- this value is taken from b
"two", "N",
"three", "N"
Run Code Online (Sandbox Code Playgroud)
我尝试过做一个普通的左外连接,但是Value
"三" 的结果总是一个空字符串
var res = (from l in a
join r in b on l.Key equals r.Key into lrs
from lr in lrs.DefaultIfEmpty()
select new KeyValuePair<string, string>(l.Key, lr.Value)).ToArray();
Run Code Online (Sandbox Code Playgroud)
这也应该有效:
var res = (from p in b.Concat(a)
group p by p.Key into g
select g.First()).ToArray();
Run Code Online (Sandbox Code Playgroud)
或者用流利的语法:
var res = b.Concat(a).GroupBy(p => p.Key, (k, g) => g.First()).ToArray();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
76 次 |
最近记录: |