【发布时间】:2015-09-09 11:02:21
【问题描述】:
我有两个自定义类,
-
BeneficiaryResponse和 BeneficiaryDetail
两者都有 key Id 和 AliasName 字段。
我想在 Linq 查询的帮助下从第一类中获取那些缺失值,即 BeneficiaryResponse,它在 Beneficiary Detail 中不存在。 例如。 BeneficiaryResponse 有 30 个参数,而 Beneficiary 有 20 个参数,那么我希望 BeneficiaryResponse 中缺少 10 个参数。
public class BeneficiaryDetail
{
public BeneficiaryDetail[] beneInternal
{
get;
set;
}
public int? Id
{
get;
set;
}
public string AliasName
{
get;
set;
}
}
public class BeneficiaryResponse
{
public int Id
{
get;
set;
}
public string AliasName
{
get;
set;
}
}
现在 BeneficiaryResponse 有以下内容,
[{"Id":763886,"AliasName":"ABC-3594"},
{"Id":763759,"AliasName":"ABC-6789"},
{"Id":763661,"AliasName":"ABC-9111"},
{"Id":763668,"AliasName":"ABC-9111"},
{"Id":764467,"AliasName":"ABC-3594"}]
和 BeneficiaryDetail 有,
[{"Id":763886,"AliasName":"ABC-3594"},
{"Id":763759,"AliasName":"ABC-6789"},
{"Id":764467,"AliasName":"ABC-3594"}]
如何从 BeneficiaryResponse 中获取剩下的 2 个缺失。
【问题讨论】:
-
所以是
LinQ或Reflection的问题?您想检测第二个列表中不存在一个对象的位置吗? (在 Linq 中搜索 Google 以查找Contains)或者您想通过Reflection从对象中提取一些Fields、MethodInfo? -
我尝试过使用“Except”和“Sequence”,但它不起作用。我只是想要所有那些在另一个中不存在的字段的值,比如两个数组 A 和 B。A 有 10 个值,而 B 有 8 个。然后我想要那些 2。
-
我同意@Jasper,这还不清楚。这个问题至少需要一些样本数据和预期的结果。您对“字段”和“参数”这两个词的使用令人困惑。
-
Linq 的答案:
collection1.Where(item => collection2.Contains(item)).Select(item => item)