我正在尝试列出唯一条目。 我有两个列表,但我想在检查是否已有任何条目后最终得到一个。我怎么能用Linq意识到这一点?
//Is a list with Activity, which have an ID property
public static List<Activity> Activites = new List<Activity>();
//Is only a list of string IDs
List<string> l = FileManagement.GetFileContent_List(WALLFILE);
foreach(Activity a in Activites)
{
if (!l.Contains(a.ID.ToString())) l.Add(a.ID.ToString());
}
答案 0 :(得分:4)
您可以使用Union方法连接所有ID并且不重复:
l = l.Union(Activities.Select(a => a.ID.ToString()).ToList();
或直接:
var l = FileManagement.GetFileContent_List(WALLFILE)
.Union(Activities.Select(a => a.ID.ToString()).ToList();
答案 1 :(得分:1)
使用Union
会将您的列表合并在一起,并且不会重复值。例如:
List<string> list1 = new List<string>()
{
"apple",
"banana",
"cat"
};
List<string> list2 = new List<string>()
{
"dog",
"cat", //extra
"ear"
};
var combined = list1.Union(list2).ToList();
这将输出
apple banana cat dog ear
您需要一些方法将活动与l
中的字符串进行比较。
答案 2 :(得分:0)
要获得这些物品你可以试试这个:
var listA = new List<string> {"a", "b", "c", "a"};
var listB = new List<string>();
listB.AddRange(listA
.Where(listAItem => listAItem != listB.Find(listBItem => listBItem == listAItem)));
这将返回listB { "a", "b", "c" };