我敢肯定,这一刻以木为本。
var dateListA = new List<DateTime>();
var dateListB = new List<DateTime>();
for (var date = DateTime.Parse("01-Dec-2013"); date <= DateTime.Parse("08-Dec-2013"); date = date.AddDays(1))
dateListA.Add(date);
for (var date = DateTime.Parse("05-Dec-2013"); date <= DateTime.Parse("10-Dec-2013"); date = date.AddDays(1))
dateListB.Add(date);
var results = distinct_Merge_Of_dateListA_And_dateListB_But_With_New_WasInListB_Boolean_Property => new { Date, WasInListB };
foreach (var result in results)
{
System.Console.WriteLine("{0} {1}", result.Date, result.WasInListB);
}
预期输出
01-Dec-2013 No 02-Dec-2013 No 03-Dec-2013 No 04-Dec-2013 No 05-Dec-2013 Yes 06-Dec-2013 Yes 07-Dec-2013 Yes 08-Dec-2013 Yes 09-Dec-2013 Yes 10-Dec-2013 Yes
我正在尝试对列表进行两次合并,但如果结果包含在列表 B 中,我会在最终列表中指出(使用 bool 值)。感谢任何关于如何操作的提示。
最佳答案
您可以使用:
var newInA = dateListA.Except(dateListB);
var results = newInA
.Select(d => new { Date = d, WasInListB = false })
.Concat(dateListB.Select(d => new { Date = d, WasInListB = true }));
这将为您提供您列出的结果。它首先列出仅在 A 中找到的项目,然后列出 B 中的所有项目。
关于c# - Distinct concat 两个 IEnumerables 并标记它是否来自列表 B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641630/