使用linq比较对象值适用于单个对象,但不适用于对象列表

时间:2013-11-27 15:23:39

标签: c# .net linq

我使用两种方法根据提供的keyname和keyvalue返回一个子集或过滤的对象列表。传递单个keyname和keyvalue的第一个方法可以正常工作,但传递keyname和List的潜在值的第二个方法总是返回一个空列表。任何人都可以帮助第二种方法的语法,让我知道我做错了什么?

这个有效:

public List<GenericDataObject> FilterItems(string ItemStatus, string KeyName, object KeyValue)
    {
        return this.Items.Where(p => p.PropString("ItemStatus") == ItemStatus && p.Prop(KeyName).Equals(KeyValue)).ToList();
    }

这个没有:

public List<GenericDataObject> FilterItems(string ItemStatus, string KeyName, List<object> KeyValues)
    {
        return this.Items.Where(p => p.PropString("ItemStatus") == ItemStatus && KeyValues.Contains(p.Prop(KeyName))).ToList();
    }

1 个答案:

答案 0 :(得分:0)

只需将您的条件重写为此

即可
KeyValues.Any(x => x.Equals(p.Prop(KeyName)))