1

我有 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 的一个很好的用途(而不是使用一些数组来做这个)?

4

4 回答 4

2

你很接近:

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

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

于 2013-01-17T14:06:36.737 回答
2

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

var crossResult = from max in MaxDates
                  from min in MinDates
                  select new { maxPriceDate = max.PriceDate, minPriceDate = min.PriceDate};
于 2013-01-17T14:07:19.580 回答
1
var res = from max in MaxDates
                  from min in MinDates
                  select new { MaxPriceDate = max.PriceDate,
                               MinPriceDate = min.PriceDate};
于 2013-01-17T14:09:59.690 回答
0

By using extension method,

var results = MaxDates.SelectMany(x => MinDates, (x, y) => new {x, y});
于 2013-01-17T14:08:57.167 回答