我正在尝试从Data Base加入一个Linq集合,从XML文件加入一个。这可能吗?我总是得到:除了Contains()运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。
这是我的代码:
MyDataContext dc = new MyDataContext();
XElement CustomData;
var pages = from p in dc.Pages
select new
{
Title = p.Title,
Slug = p.Slug,
PageId = p.PageId.ToString()
};
var orders = from p in CustomData.Element("pages").Elements("page")
select new
{
PageId = (string)p.Attribute("id"),
SortOrder = (int)p.Attribute("sortOrder")
};
var source = from p in pages
join o in orders
on p.PageId equals o.PageId
select p;
source.ToList();
答案 0 :(得分:1)
我认为你根本不需要加入。
MyDataContext dc = new MyDataContext();
XElement CustomData;
var orders = CustomData.Element("pages").Elements("page")
.Select( o => new
{
PageId = p.Attribute("id").ToString(),
SortOrder = (int)p.Attribute("sortOrder")
});
var source = dc.Pages
.Where( p => orders.Select( o => o.PageId)
.Contains( p.PageId.ToString() ))
.Select( p => new
{
Title = p.Title,
Slug = p.Slug,
PageId = p.PageId.ToString()
});
答案 1 :(得分:0)
看起来你不能在本地集合(订单)和延迟执行的LINQ2SQL结果之间进行连接。你可以执行页面查询ToList(比如最初建议的tvanfosson :))或者可能做这样的事情......
var source = from p in pages
where orders.Select(o=> o.PageID).Contains(p.PageID)
select p;
这不是你想要的连接,但如果你想延迟执行LINQ2SQL,你可以这样做。