HOW TO:更改IList <object>属性</object>中的值

时间:2015-02-25 21:34:55

标签: c# linq

我有一个对象列表(下面查询中的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;
            }

1 个答案:

答案 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进行空检查。