【发布时间】:2016-12-01 23:28:11
【问题描述】:
我有一个包含 Contain() 方法的 linq 语句。我正在使用它,以便我可以从 name 不为 null 的数组中选择所有对象,但只能从 array1 中选择对象 array2 中包含相同名称的对象。
我已设法返回结果,但在我需要对象值的地方显示 true 或 false。
代码
var response = JsonConvert.DeserializeObject<FamilyNames>(result);
List<object> data = new List<object>();
ClassName className = new ClassName();
object [] getNames = className.GetType()
.GetProperties()
.Select(p =>
{
object value = p.Name;
return value == null ? null : value.ToString();
})
.ToArray();
foreach (var obj in response.items.Where(n => n.name != null).DistinctBy(x => x.name).Select(a => getNames.Contains(a.initialName)))
{
data.Add(obj);
}
client.Dispose();
return Json(data, JsonRequestBehavior.AllowGet);
}
结果是:
["True","False","True"]
如果我不使用 select 语句,那么我会得到我的对象:
[
{
"initalName": "BD",
"firstName": "Bob",
"LastName": "Dilan"
},
{
"initalName": "HT",
"firstName": "Harry", // the initialName doesn't exist in list so need to remove this object
"LastName": "Thomas"
},
{
"initalName": "LJ",
"firstName": "Lindsey",
"LastName": "Jones"
}
]
getNames 数组中不存在 initalName,因此需要将其删除。任何建议将不胜感激,尤其是在方法上。期望的结果是:
[
{
"initalName": "BD",
"firstName": "Bob",
"LastName": "Dilan"
},
{
"initalName": "LJ",
"firstName": "Lindsey",
"LastName": "Jones"
]
【问题讨论】: