我有两个通过映射表相关的表:
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();
}
答案 0 :(得分:3)
好的,我厌倦了评论......
using( someContext sc = new someContext())
{
sc.Map_Keywords_Title.Include("Title")
.Include("Keyword")
.Where( mkt => containedInText.Contains(mkt.Keyword.WordText));
}
这是否与您想要的一致?