Linq-获取具有list <string>属性的main,其中list <string>包含字符串

时间:2017-05-20 04:52:10

标签: c# string linq

我有一个具有List属性的List。当属性List中的字符串项包含字符串时,如何获取任何List?
这是我的代码,但它什么也没有返回。

class Program
{
    static void Main(string[] args)
    {
        List<Plist> a = new List<Plist>()
        {
            new Plist()
            {
                Name="a",
                StringList=new List<string>()
                {
                    "a1","b1","c1"
                }
            },
            new Plist()
            {
                Name="b",
                StringList=new List<string>()
                {
                    "a2","b2","c2"
                }
            },new Plist()
            {
                Name="c",
                StringList=new List<string>()
                {
                    "a3","b3","c3"
                }
            },new Plist()
            {
                Name="d",
                StringList=new List<string>()
                {
                    "a4","b4","c4"
                }
            }
        };
        var list = a.Where(n=>n.StringList.All(s=>s.Contains("a"))).Take(3);

        foreach(Plist items in list)
        {
            Console.WriteLine($"{items.Name}");
            foreach(string item in items.StringList)
            {
                Console.WriteLine($"    {item}");
            }
        }

        Console.ReadLine();
    }

}

public class Plist
{
    public string Name { get; set; }
    public List<string> StringList { get; set; }
}

我是Linq的新手,所以希望大家帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

目前,您的LINQ声明内部列表中的每个(All())项都必须包含"a"。您想要检查项目的Any()是否包含"a"

为此,您应使用Any()代替All()

var list = a.Where(n => n.StringList.Any(s => s.Contains("a")));