Как построить запрос LINQ to XML с условным выбором - PullRequest
0 голосов
/ 10 ноября 2011

Элементы xml являются переменными в зависимости от некоторых условий. Мне нужно инициализировать экземпляр с другим элементом, основываясь на значении другого элемента.

var result = (from name in names
   select new MyName
   {
      name.First  = name.Type = Fracais ? name.PreNom : name.First,
      name.Last 
   }

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

То, что у вас есть, почти правильно. Мне пришлось угадывать перечисления и членов, так как вы не предоставляете другие классы:

   var result = from name in names
                 select new Person()
                   {
                      First = name.Type == PersonType.Fracais ? name.PreNom : name.First,
                      Last = name.Last
                   };

В запросе linq может содержаться практически любое выражение, включая вызовы функций, поэтому тестирование значений и их изменение на лету вполне приемлемо.

0 голосов
/ 10 ноября 2011

Как насчет этого? Как бессмысленная альтернатива.

var result = names.where(name => name.Type == Francais).Select(name =>
                                           name.PreNom, name.Last).Union()
    names.where(name => name.Type != Francais).Select(name.First, name.Last);
...