У меня есть две таблицы, которые связаны через таблицу сопоставления:
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();
}