您的位置:首页 > 数据库

Linq to DataSet 能否和 Linq to SQL 混合使用?

2010-01-28 16:05 323 查看
最近做项目的时候,遇到了一个问题。我主要是做一个Web Services给别人用的。别人传一个用户ID号过来,然后我将这个用户的所有好友的下载记录包装成一个DataSet返回去。 而根据用户ID号获取该用户的所有好友信息,则是通过另一个Web Services得到的,这里为FriendDS。
我原本的想法是:将这个FriendDS 与数据库级联查询,代码如下:
var linq = from t1 in mycon.Templet_Down
join t2 in mycon.Templet
on t1.TempletID equals t2.TempletID
join t3 in FriendDS.Tables[0].AsEnumerable()
on t1.UserID equals t3.Field< System.Guid >("FriendID")
select new
{
UserID = userID,
FriendID = t3.Field< System.Guid >("FriendID"),
FriendName = t3.Field < System.String >("FriendName"),
TempletName = t2.TempletName,
TempletID = t1.TempletID,
DownloadTime = t1.DownloadTime
};


可是在调试的时候就会报错:不能在查询运算符(Contains() 运算符除外)的 LINQ to SQL 实现中使用本地序列
最后改成了:
for (int i = 0; i < FriendDS.Tables[0].Rows.Count; i++)
{
var linq =  from t1 in mycon.Templet_Down
join t2 in mycon.Templet
on t1.TempletID equals t2.TempletID
where t1.UserID == new Guid(FriendDS.Tables[0].Rows[i]["FriendID"].ToString())
select new
{
UserID = userID,
FriendID = new Guid(FriendDS.Tables[0].Rows[i]["FriendID"].ToString()),
FriendName = FriendDS.Tables[0].Rows[i]["FriendName"].ToString(),
TempletName = t2.TempletName,
TempletID = t1.TempletID,
DownloadTime = t1.DownloadTime
};

}


第二种方式很容易理解,可是第一种方式为什么不行,我还是没有想明白,请大家指点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: