Пожалуйста, помогите мне здесь. У меня есть запрос LinQ со многими условиями фильтра.LinQ Aggregate Error - Последовательность не содержит элементов
Ниже мой запрос:
var Aggregate = linqkb.Where(s => s.Status.Equals("Approved")).Select(s => s.Approver)
.Distinct()
.Aggregate((i, j) => i + ";" + j)
.Split(';')
.Distinct();
В некоторых случаях, я получаю сообщение об ошибке:
Error Message : Sequence contains no elements
Stack Trace : at System.Linq.Enumerable.Aggregate[TSource](IEnumerable`1 source, Func`3 func)
Я новичок в Linq. Пожалуйста, предложите.
Я гугл и попытался использовать **.DefaultIfEmpty()**
до того Aggregator
, как показано ниже:
var Aggregate = linqkb.Where(s => s.Status.Equals("Approved")).Select(s => s.Approver)
.Distinct()
.DefaultIfEmpty()
.Aggregate((i, j) => i + ";" + j)
.Split(';')
.Distinct();
Но это не работает.
Любые предложения?
Что такое 'linqkb' и какими являются элементы этой последовательности? –
Вы можете попытаться разделить вызовы и отладить промежуточные результаты. Возможно, нет элемента с 'Status =" Approved ". 'DefaultIfEmpty' предоставляет еще одну пустую последовательность afaik. –
Почему вы присоединяетесь к ''; "', чтобы разделить его снова на следующей строке? Простейшим решением для исключения является предоставление начального значения 'Aggregate', т. Е.' Aggregate ("", (i, j) => i + ";" + j) '. – Lee