我有一个对象列表(下面查询中的rList)。每个对象(下面的查询中的v)内部有6个字符串对象。我需要查询每个属性,如果它等于某个字符串,则将值更改为null。
有没有比做6种不同的linq查询更简单的方法(IE:6个属性中的每一个都有一个)?
foreach (var v in rList.Where(ppe => ppe.Property1 != null
&& (ppe.Property1.Equals(warning1, StringComparison.OrdinalIgnoreCase)
|| ppe.Property1.Equals(warning2, StringComparison.OrdinalIgnoreCase)
|| ppe.Property1.Equals(warning3, StringComparison.OrdinalIgnoreCase))))
{
ppe.Property1 = null;
}
答案 0 :(得分:1)
您可以做的第一件事就是将所有警告放入集合中,然后在查询中使用该集合的操作:
var warnings = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
warning1,
warning2,
warning3,
};
foreach(var item in rList.Where(ppe => warnings.Contains(ppe.Property1)))
item.Property1 = null;
请注意,只要该集不包含空值(意味着warning1,warning2和warning3不是null
),就不需要Where
进行空检查。