【发布时间】:2010-11-30 06:42:26
【问题描述】:
我有 3 个 sql 表 SourceKeys、Channels 和 ChannelTypes。查询这些表,并将它们的数据存储在我的数据集中的数据表中。
我需要的是这个:
SELECT ...
FROM ChannelTypes ct
LEFT OUTER JOIN Channels ch ON ct.channelTypeID = channelTypeID
LEFT OUTER JOIN SourceKeys sk ON ch.channelID = sk.channelID
但在 linq 形式...我对 linq 有点陌生,阅读了一堆 msdn 文章,但只需要一些帮助来克服困难。
var sourceKeyQuery =
from ct in ds.Tables["ChannelTypes"].AsEnumerable()
join ch in ds.Tables["Channels"].AsEnumerable()
on ct.Field<int>("channelTypeID") equals ch.Field<int>("channelTypeID") into gj1
from channels in gj1.DefaultIfEmpty()
join sk in ds.Tables["SourceKeys"].AsEnumerable()
on channels.Field<int>("channelID") equals sk.Field<int>("channelID") into gj2
from sourceKeys in gj2.DefaultIfEmpty()
orderby ct.Field<string>("channelType"),
channels.Field<string>("channel"),
sourceKeys.Field<string>("sourceKeys")
select (sourceKeys == null)?null:sourceKeys.Field<int?>("sourceKeyID");
我得到的错误是 channels.Field<int>("channelID") 不能为空...我尝试使用 <int?> 但它没有用。
【问题讨论】: