Linq to Entities Присоединиться - я не хочу анонимных типов - PullRequest
1 голос
/ 17 марта 2010

У меня есть две таблицы, которые связаны через таблицу сопоставления:

  1. keywords
  2. 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();
    }

1 Ответ

3 голосов
/ 17 марта 2010

Хорошо, я устал от комментариев ...

using( someContext sc = new someContext())
{
    sc.Map_Keywords_Title.Include("Title")
                .Include("Keyword")
                .Where( mkt => containedInText.Contains(mkt.Keyword.WordText));
}

Это где-то близко к тому, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...