【发布时间】:2020-03-13 08:33:23
【问题描述】:
我有两个列表list_1 和list_2 分别在下面提到。
清单 1:
[
{
"Id": "O1",
"VId": "V2"
},
{
"Id": "O2",
"VId": "V2"
},
{
"Id": "O3",
"VId": "V2"
}
]
清单 2:
[
{
"Id": "O1",
"VId": "V1"
},
{
"Id": "O3",
"VId": "V1"
}
]
我正在使用下面的查询加入这两个列表。
var query = from obj_1 in list_1
join obj_2 in list_2
on obj_1.Id equals obj_2.Id into objCombined
from combinedObj in objCombined.DefaultIfEmpty()
select new Info {Id = obj_1.Id, S_VId = obj_1.VId, T_VId = combinedObj?.VId ?? null};
我得到的结果是这样的。
[
{
"Id": "O1",
"S_VId": "V2",
"T_VId": "V2" // want value as V1 here
},
{
"Id": "O2",
"S_VId": "V2",
"T_VId": null // This is correct
},
{
"Id": "O3",
"VId": "V2",
"T_VId": "V2" // want value as V1 here
}
]
正在填充的combinedObj 来自list_1,这就是为什么我在T_VId 的输出中得到的值是V2,我希望T_VId top 的值取自list_2 并成为V1。
我应该如何编写查询来实现这一点?
【问题讨论】:
-
您可以添加一个您想要的退出示例吗?
-
@Iria : T_VId 属性应该具有 list_2 的 Vid 属性的值。即V1
-
不出所料,我无法重现此问题 (example),因此我投票结束。
-
arg,变量名不连贯。