Linq: объединение двух таблиц

В моей сетке WPF я заполняю следующие свойства. Последние два приходят с другого стола. Я хотел бы получить правило сопоставления из другой таблицы, где sourceelementid в таблице транзакций равно id таблицы messagefield

public List<MessageFieldViewModel> GetAllViewModelMsgFields()
{
    messageFieldVModel = messageField.GetAllMessageField().Select(msgFields => new MessageFieldViewModel
    {
        Id = msgFields.Id,
        Code = msgFields.Code,
        Name = msgFields.Name,
        Position = msgFields.Position,
        Length = msgFields.Length,
        IsMapped = (transactionRuleList.Any(tr=> tr.SourceElementId ==msgFields.Id)),
        MappingRule = transactionRuleList.Where(mapRule => mapRule.MappingRule.Any(tr=> tr.SourceElementId ==msgFields.Id)),
    })
.ToList();
    return messageFieldVModel;
}

но столбец правила сопоставления выдает ошибку. Кто-нибудь может мне помочь ?


person Ayda Sayed    schedule 06.06.2013    source источник
comment
Можете ли вы опубликовать внутреннее исключение, пожалуйста?   -  person Goanne    schedule 06.06.2013
comment
@Goanne вот ошибка: «char» не содержит определения для «SourceElementId», и не удалось найти метод расширения «SourceElementId», принимающий первый аргумент типа «char» (вам не хватает директивы использования или ссылки на сборку?   -  person Ayda Sayed    schedule 06.06.2013
comment
Хорошо, вы собирались добавить последнюю запятую перед закрытием внутренней скобки? msgFields.Id)), => msgFields.Id))   -  person Goanne    schedule 06.06.2013
comment
Вот что у меня есть: MappingRule = transactionRuleList.Where(mapRule => mapRule.MappingRule.Any (tr => tr.SourceElementId == msgFields.Id)) }) .ToList();   -  person Ayda Sayed    schedule 06.06.2013
comment
Я узнал, в чем проблема, я опубликую решение в ближайшее время! Спасибо вам всем   -  person Ayda Sayed    schedule 06.06.2013


Ответы (1)


Вот решение:

      transactionRuleList = transationRuleViewModel.GetAllTranslationRules();
        messageFieldVModel = messageField.GetAllMessageField().Select(msgFields => new MessageFieldViewModel
        {
            Id = msgFields.Id,
            Code = msgFields.Code,
            Name = msgFields.Name,
            Position = msgFields.Position,
            Length = msgFields.Length,
            IsMapped = (transactionRuleList.Any(tr => tr.SourceElementId == msgFields.Id)),
            MappingRule = transactionRuleList.Any(mapRule => mapRule.SourceElementId == msgFields.Id)?transactionRuleList.First(mapRule => mapRule.SourceElementId == msgFields.Id).MappingRule:null
person Ayda Sayed    schedule 06.06.2013