List<A>包含若干个A对象
对象A包含若干个属性,每个属性为一个List<string>
List<string> B 包含若干个关键字
需要找到A中的某个List<string>包含List<string> B 中的关键字的数据,并根据关键字的不同对应的数据存放在不同的List中
题主要的代码如下
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp2
{
class A
{
public List<string> attr1 { get; set; }
public List<string> attr2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
var B = new List<string> { "root", "user" };
var alist = new List<A>
{
new A{
attr1=new List<string>{ "System user", "root password", "System name", "root" },
attr2=new List<string>{ "Opereate user", "root user", "Administrator", "localhost root" }
}
};
var kv = new Dictionary<string, List<string>>();
foreach (var b in B)
{
kv.Add(b, new List<string>());
foreach (var a in alist)
{
//a.attr1.Union(a.attr2).Where(i => i.ToLower().Contains(b.ToLower()))//如果不区分大小写用这个
//有更多的属性要查询自己继续Union后再Where查询
kv[b].AddRange(a.attr1.Union(a.attr2).Where(i => i.Contains(b)).ToList());
}
}
foreach (var kp in kv)
{
Console.WriteLine(kp.Key);
Console.WriteLine(string.Join("\n", kp.Value.Distinct()));
Console.WriteLine("\n\n");
}
Console.ReadKey();
}
}
}