c# - Distinct concat 两个 IEnumerables 并标记它是否来自列表 B

标签 c# linq merge ienumerable

我敢肯定,这一刻以木为本。

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/

相关文章:

c# - 如何获取 WebAPI Web 服务中可用方法的列表?

linq - (流利)NHibernate SELECT IN

c# - 在 LINQ 中获取多个集合的平均值

sql - 将相同的数据库合并为一个

svn - 帮助我了解 Svn 合并

c# - mysql 从存储过程调用系统命令不起作用

c# - Android:如何记录应用程序的使用次数?

java - if(a&&b) 是否应该比 if(a) if(b) 花费更多时间?

git - 在 git merge commit 中列出所有修改过的文件——即使是快进的

SQL Server MERGE 语句在 using 子句中包含 "DUAL"