我有两个表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});