如何在数据表中插入新行?

时间:2013-04-09 10:57:45

标签: c# linq join

我有两张桌子A和B. 表A类似于:

Date           | Value
1/9/2013 13:30 |   1
1/9/2013 13:31 |   2
1/9/2013 13:32 |   2.1
1/9/2013 13:33 |   1.6
1/9/2013 13:34 |   1.7
1/9/2013 13:35 |   1.9
1/9/2013 13:36 |   5.6
1/9/2013 13:37 |   1.6
1/9/2013 13:38 |   1.64
1/9/2013 13:39 |   1.36

表B就像:

1/9/2013 13:33 |   1.7
1/9/2013 13:37 |   1.6
1/9/2013 13:38 |   1.8

我希望有一个表C,它将包含B的所有条目,但如果在13:30没有条目,例如值为null。所以表C就像:

 Date           | Value
1/9/2013 13:30 |   null
1/9/2013 13:31 |   null
1/9/2013 13:32 |   null
1/9/2013 13:33 |   1.7
1/9/2013 13:34 |   null
1/9/2013 13:35 |   null
1/9/2013 13:36 |   null
1/9/2013 13:37 |   1.6
1/9/2013 13:38 |   1.8
1/9/2013 13:39 |   null

我知道有人可以通过加入和linq做到这一点,你有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试关注LEFT JOIN查询:

from a in dtA.AsEnumerable()
join b in dtB.AsEnumerable() on a.Field<DateTime>("Date") equals b.Field<DateTime>("Date") into joinedB
from b in joinedB.DefaultIfEmpty()
select new
{
    Date = a.Field<DateTime>("Date"),
    Value = b != null ? b.Field<DateTime>("Value") : null
}