Результат LINQ для данных без цикла for - PullRequest
0 голосов
/ 26 февраля 2019

Я уверен, что это легко (или что я совершенно не прав), но все, что я хочу сделать, это получить единичные значения для запроса LINQ для таблицы данных и не использовать цикл for .. each для доступа к ним.

Сценарий .. У меня есть таблица данных, содержащая количество строк.Я выполняю свой запрос в поисках определенного совпадения на «EP», например, так:

Dim qryB = From rw In oDT_Cables Where rw("EP").Equals(br.Position) Select ld = rw("LOAD"), tl = rw("TOT-LEN")

Теперь .. Я знаю, что у меня есть только один результат (из-за проверки при вставке)Так как же мне просто получить доступ к элементам ld и tl без a для каждого цикла ??

Я пробовал:

qryb.elementat(1)   error
qryb.elementat(ld)  Not possible
qryb.tl             not possible

Кто-нибудь знает, как я могу получить доступ к tl и ld иззапрос пожалуйста?Это высоко ценится.

Бретт

1 Ответ

0 голосов
/ 26 февраля 2019

Если вы точно знаете, что запрос LINQ дает один результат, вы набираете Single.

Dim result = qryB.Single()

Если результата может не быть, но никогда не будет больше, чем вы, вы звоните SingleOrDefault и результат может быть Nothing.Если будет хотя бы один результат, но может быть больше, и вам нужен только первый, вы звоните First.Если может быть ноль, один или несколько, и вам нужно первое, если оно есть, вы звоните FirstOrDefault, и результат может быть Nothing.

Обратите внимание, что некоторые поставщики LINQ не поддерживают оба варианта.Например, LINQ to Entities (поставщик LINQ для Entity Framework) поддерживает First и FirstOrDefault, но не Single или SingleOrDefault (если это не изменилось недавно), в то время как, если я не ошибаюсь, LINQ to SQL поддерживает Single и SingleOrDefault, но не First или FirstOrDefault.

Обратите внимание, что если вы собираетесь использовать ElementAt, вам придется указать 0 в качестве индекса.ElementAt работает почти так же, как индексирование массива или другого IList, поэтому первый элемент имеет индекс 0. Вы можете использовать ElementAt только для чего-то в середине результата запроса, учитывая, что у вас есть Single, First и Last методы и их обнуляемые эквиваленты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...