为什么这会返回零结果?

时间:2011-02-09 20:33:18

标签: c# .net linq generics c#-4.0

我有List<List<string>>,当我尝试使用List<string>进行搜索时,它不会返回任何结果。

有什么想法吗?

由于

        List<List<string>> test = new List<List<string>>();

        List<string> ff = new List<string>();
        ff.Add("1");
        ff.Add("ABC 1");
        test.Add(ff);

        ff = new List<string>();
        ff.Add("2");
        ff.Add("ABC 2");

        test.Add(ff);

        var result = test.Where(x=>x.Contains("ABC"));

        //result.Count(); is 0

3 个答案:

答案 0 :(得分:13)

您的列表中都没有包含元素“ABC”。

如果要查找包含“ABC”元素作为子字符串的列表,可以执行以下操作:

var result = test.Where(x => x.Any(y => y.Contains("ABC")));

答案 1 :(得分:0)

您的所有列表都不包含字符串“ABC”。当你使用包含函数时,它不搜索字符串,它只匹配整个字符串。如果要搜索部分字符串,则必须使用以下内容:

var result = test.Where(x => x.Where(y => y.Contains("ABC").Count() > 0));

答案 2 :(得分:0)

这是因为你正在做一个列表列表,并且在你的选择中不够深入。这样的事情会给你两个结果:

var result = test.Select(x => x.Where(y => y.Contains("ABC")));