我有两个,它们通过映射表相关的表:LINQ到实体加入 - 我不想匿名类型
keywords
titles
我试图返回基于连接结果的Map_Keywords_Title
(映射表的对象)列表。
直到我添加了最后一部分typedQuery
它只是返回匿名类型的对象。我希望它返回Map_Keywords_Title
类型的项目,所以我试着在最后添加Select(也试过Cast但失败了)。现在的问题是结果对象不是由实体框架管理的,所以我不能保存对它们的更改。
Linq to Entities中没有直接的方法吗?我使用VS2008,所以我还没有新的EF。
public IList<Map_Keywords_Title> MatchingTitleKeywordMappings(string containedInText)
{
var keywords = QueryKeywords();
if (!string.IsNullOrEmpty(containedInText))
{
Expression<Func<Keyword, bool>> exprContainsKeyword = k => containedInText.Contains(k.WordText);
keywords = keywords.Where(exprContainsKeyword);
}
var maps = QueryMap_Keywords_Title();
var anonQuery = keywords.Join(
maps,
key => (int)key.Id,
map => (int)map.Keyword.Id,
(key, map) => new
{
map.Id,
map.Keyword,
map.Title
});
var typedQuery = anonQuery.ToList().Select(anon => new Map_Keywords_Title()
{
Id = anon.Id,
Keyword=anon.Keyword,
Title=anon.Title
});
return typedQuery.ToList();
}
我不相信你需要第二个查询。你可以改变你的第一个查询中的“新{...”到“新的Map_Keywords_Title {...”? – kervin 2010-03-17 01:32:30
它不喜欢那样。它说:“不能初始化类型Map_Keywords_Title集合初始值设定项,因为它没有实现'System.Collections.IEnumerable'。 即使这样,我仍然有创建一个”新“Map_Keywords_Title而不是使用一个管理的问题通过EF,没有? – Vince 2010-03-17 01:40:36
这有帮助吗?http://msdn.microsoft.com/en-us/library/bb896271.aspx?对不起,我没有一个简单的方法来测试代码。 – kervin 2010-03-17 01:50:43