我有两个清单,
adm = Admin(name='test',url='/db')
我尝试编写一个接受detailId并通过合并上面两个列表返回结果的方法,如果有重复(重复定义=当detailId,两个列表之间有详细匹配时)从L2中选择条目
所以合并后的结果将是
private List<DealResponse> L1 = new List<DealResponse>
{
new DealResponse {detailId = "5", detailcd = "ABC", fileName = "string 1", isNgo = "0"},
new DealResponse {detailId = "5", detailcd = "DEF", fileName = "string 2", isNgo = "0"},
new DealResponse {detailId = "5", detailcd = "XYZ", fileName = "string ", isNgo = "0"}
};
private List<DealResponse> L2 = new List<DealResponse>
{
new DealResponse {detailId = "5", detailcd = "ABC", fileName = "string 11", isNgo = "1"},
new DealResponse {detailId = "6", detailcd = "MNO", fileName = "string 3", isNgo = "1"}
};
请注意,结果我们从L2中选择了此条目,因为detailId = 5,detailcd = ABC重复
var Result = new List<DealResponse>
{
new DealResponse {detailId = "5", detailcd = "ABC", fileName = "string 11", isNgo = "1"},
new DealResponse {detailId = "5", detailcd = "DEF", fileName = "string 2", isNgo = "0"},
new DealResponse {detailId = "5", detailcd = "XYZ", fileName = "string ", isNgo = "0"},
new DealResponse {detailId = "6", detailcd = "MNO", fileName = "string 3", isNgo = "1"},
};
答案 0 :(得分:2)
如果您确实想要使用detailId
过滤结果,因为此值会传递给GetDealResponse()
方法,您可以向均衡.Where
添加Union
条件} list。
public class DealResponse
{
public string detailId { get; set; }
public string detailcd { get; set; }
public string fileName { get; set; }
public string isNgo { get; set; }
}
public List<DealResponse> GetDealResponse(string detailId)
{
return L2.Union(L1, new DealResponseComprarer())
.Where(elm => elm.detailId.Equals(detailId)).ToList();
}
L1 = new List<DealResponse>() {
new DealResponse() { detailId = "5", detailcd = "ABC" , fileName = "string 1", isNgo = "0" },
new DealResponse() { detailId = "5", detailcd = "DEF" , fileName = "string 2", isNgo = "0" },
new DealResponse() { detailId = "5", detailcd = "XYZ" , fileName = "string ", isNgo = "0" }};
L2 = new List<DealResponse>() {
new DealResponse() { detailId = "5", detailcd = "ABC" , fileName = "string 11", isNgo = "1" },
new DealResponse() { detailId = "6", detailcd = "MNO" , fileName = "string 3", isNgo = "1" }};
string ID = "5";
List<DealResponse> L3 = GetDealResponse(ID);
将返回此列表:
{ detailId = "5", detailcd = "ABC" , fileName = "string 11", isNgo = "1" }
{ detailId = "5", detailcd = "DEF" , fileName = "string 2", isNgo = "0" }
{ detailId = "5", detailcd = "XYZ" , fileName = "string ", isNgo = "0" }
答案 1 :(得分:1)
我尝试编写一个接受detailId并通过合并上面两个列表返回结果的方法,如果有重复(重复定义=当detailId,两个列表之间有详细匹配时)从L2中选择条目
另一种说法是:
这可以用一行完成:
var combined = L2.Concat(L1.Except(L2, new DealResponseComprarer()));