使用LINQ选择2个表(没有连接)



我有两个表MaxDates和MinDates,每个表都有一个DateTime列。我可以编写以下数据库SELECT查询,目的是创建一个数据集,其中包括最小和最大日期的所有组合(以计算时间跨度):

SELECT MinDates.PriceDate, MaxDates.PriceDate
FROM MinDates, MaxDates

我是LINQ的新手,想创建LINQ的等价物。我想下面的内容会是一个很好的起点,但是运气不好。

var result = from MaxDates, MinDates 
             select MaxDates.PriceDate, MinDates.PriceDate

有什么想法等效的LINQ语句将是,这是一个很好的使用LINQ (vs只是做这个使用一些数组)?

你很接近了:

var result = from max in MaxDates
             from min in MinDates 
             select new {MaxDate = max.PriceDate, MinDate = min.PriceDate};

这将为您提供您正在寻找的笛卡尔积(CROSS JOIN)。

linq中的笛卡尔积(SQL世界中的CROSS JOIN)为:

var crossResult = from max in MaxDates
                  from min in MinDates
                  select new { maxPriceDate = max.PriceDate, minPriceDate = min.PriceDate};
var res = from max in MaxDates
                  from min in MinDates
                  select new { MaxPriceDate = max.PriceDate,
                               MinPriceDate = min.PriceDate};

通过扩展方法,

var results = MaxDates.SelectMany(x => MinDates, (x, y) => new {x, y});

相关内容

  • 没有找到相关文章