请帮我把这个sql转换成LINQ

时间:2015-06-22 19:03:14

标签: linq

DECLARE @items table (
    pfid varchar(8),
    timestart datetime,
    timeend   datetime
)

insert INTO @items(pfid,timestart,timeend)
VALUES('123456','12:00 AM','3:00 AM')
,('987654', '2:00 AM', '4:00 PM')
,('492384', '3:00 PM', '9:00 PM')

SELECT * FROM @items a
    INNER JOIN @items b
        ON a.timestart < b.timeend
        AND b.timestart < a.timeend
        AND a.pfid != b.pfid

我需要将上面的select语句转换为LINQ。在我的代码中,我正在使用名为'dt'的DataTable。我的表有三列,就像上面的例子一样,名称完全相同,并填充了这些数据。

我正在努力创建一个LINQ查询,它将以与我上面的临时表一起使用的SQL查询相同的方式查询我的DataTable。请协助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

某些内容......我没有对此进行测试,但如果需要,您可能需要进行Datetime.Parse等...

(from r1 in dt.Rows.OfType<DataRow>()
 from r2 in dt.Rows.OfType<DataRow>()
 where r1["timestart"] < r2["timeend"] &&  r2["timestart"] < r1["timeend"] && r1["pfid"] != r2["pfid"]
 select new {R1=r1, R2=r2})