Как я могу сэкономить место в массиве, когда init с нуля?

У меня есть синтаксис linq для получения элементов из XML, это синтаксис XML:

<bbb ccc="12345">
  <productA>FIRST</productA>
  <!--productB>SECOND</productB-->
  <productC>THIRD</productC>
</bbb>

Я хочу, чтобы начать массив строк с продуктами:

string[] aaa =
                 (from el in keyValueList.Elements("bbb")
                  where (string)el.Attribute("ccc") == "12345"
                  select new string[] { (el.Attribute("productA").Value), el.Attribute("productB").Value, el.Attribute("productC").Value }).FirstOrDefault();

Теперь я пытаюсь сэкономить место, когда продукт не найден (например, productB), я не могу использовать DefaultIfEmpty(), но он не компилируется... как:

   string[] aaa =
                 (from el in keyValueList.Elements("bbb")
                  where (string)el.Attribute("ccc") == "12345"
                  select new string[] { (el.Attribute("productA").Value).DefaultIfEmpty(string.Empty), el.Attribute("productB").Value.DefaultIfEmpty(string.Empty), el.Attribute("productC").Value.DefaultIfEmpty(string.Empty) }).FirstOrDefault();

В заключение я хочу получить этот массив: {"FIRST",null,"THIRD"}, а не {"FIRST","THIRD"}

Могу ли я это сделать?

0 ответов

Другие вопросы по тегам