我有兩個,它們通過映射表相關的表: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