对象包含数组的对象列表 - 如何使用LINQ在所有对象中搜索该数组中的值

时间:2015-11-16 16:05:11

标签: c# arrays linq

所以我有一个对象列表,对象类本身包含一个包含多个值的数组。如何搜索列表中的所有对象'数组来寻找那个值?

示例:

[
{
    "ObjArray": ["1234", 123"],
    "Property1": "60",
    "Property2": "64"
},
{
    "ObjArray": ["4321", 321"],
    "Property1": "112",
    "Property2": "22"
},
{
    "ObjArray": ["9999"],
    "Property1": "2",
    "Property2": "2"
}
]

我想寻找" 9999"在所有" ObjArray" s。我怎么能用LINQ做到这一点?

修改

正如Habib指出的那样,我只需要一个简单的Contains子句。工作代码如下所示:

var result = mainList.Where(r => r.ObjArray != null && r.ObjArray.Contains("9999", StringComparer.OrdinalIgnoreCase)).FirstOrDefault();

1 个答案:

答案 0 :(得分:2)

你可以这样做:

var query = mainList.Where(r => r.ObjArray.Contains("9999"));

var query = mainList.Where(r => r.ObjArray.Any(o => o == "9999"));

(除此之外,您的JSON似乎无效,数组中的第二个值需要一个起始双引号)

["1234", 123"]
       //^^