编写此C#代码列表的更好方法

时间:2018-05-10 13:56:56

标签: c# list linq

我有3个数据库表,用于保存具有日期属性的记录。我的目标是从3个表中的每个表中检索所有日期,并将它们放入不同的列表中。我目前正在这样做,它正在运作:

var allYears = new List<List<int>>();
var lstTableOneYears = db.TableOne.Select(x => x.DateTakenRT.Year).Distinct().ToList();
var lstTableTwoYears = db.TableTwo.Select(x => x.DateTakenPIC.Year).Distinct().ToList();
var lstTableThreeYears = db.TableThree.Select(x => x.DateTakenMT.Year).Distinct().ToList();

allYears.Add(lstTableOneYears);
allYears.Add(lstTableTwoYears);
allYears.Add(lstTableThreeYears);

var distinctYears = allYears.SelectMany(x => x).Distinct().ToList();

以上是有效的,但我希望有更好的方法来用更少的线写这个?也许更好地使用LINQ?

感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:5)

您可以使用Union

product.print.zpl.barcode

在旁注中,您可以使用var distinctYears = db.TableOne.Select(x => x.DateTakenRT.Year) .Union(db.TableTwo.Select(x => x.DateTakenPIC.Year)) .Union(db.TableThree.Select(x => x.DateTakenMT.Year)) .ToList(); 而不是在上面的代码中包含包含列表的列表。