2013-06-06 3 views
0

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

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; 
} 

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

+3

Вы можете разместить внутреннее исключение, пожалуйста? – Goanne

+0

@Goanne здесь ошибка: «char» не содержит определения для «SourceElementId», и не может быть найден метод расширения «SourceElementId», принимающий первый аргумент типа «char» (вам не хватает директивы using или ссылки на сборку ? –

+0

Хорошо, вы намеревались добавить последнюю кому перед закрытием внутренней скобки? MsgFields.Id)), "=>" msgFields.Id)) " – Goanne

ответ

0

Вот решение:

 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 
Смежные вопросы