Запрос .Чистый набор данных и игнорировать строки, содержащие значение null


Я написал некоторый код, чтобы прочитать столбец из набора данных называется AltIds. Значения могут принимать значения null. Мой код написан найти все значения в столбце, которые не равны null и записать их в массив.

Guid[] altIds = myDataSet.Tables[0].AsEnumerable()
  .Select(row => row.Field<Guid?>("AltId"))
  .Where(x => x.HasValue)
  .Select(x=>x.Value)
  .ToArray();

Код работает, но кажется немного сложнее. Есть ли лучший способ сделать это?



1137
1
задан 14 ноября 2011 в 05:11 Источник Поделиться
Комментарии
1 ответ

Что у вас нормально. Вы могли бы реструктурировать его, чтобы ликвидировать одного из выбирает, но тогда бы ты повторяешься со строкой.

var altIds = myDataSet.Tables[0].AsEnumerable()
.Where(row => row.Field<Guid?>("AltId").HasValue)
.Select(row => row.Field<Guid?>("AltId").Value)
.ToArray();

Вы могли бы переписать это в синтаксисе выражения запроса, но это только менее сложным, если вы найдете свободное владение синтаксисом более.

var altIds = (from row in myDataSet.Tables[0].AsEnumerable()
let x = row.Field<Guid?>("AltId")
where x.HasValue
select x.Value).ToArray();

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

2
ответ дан 14 ноября 2011 в 07:11 Источник Поделиться