C # LINQ (Language-Integrated Query) - король всего, когда дело доходит до работы с базой данных на C # или с IEnumerable, вероятно, наиболее часто используемая функция, используемая в C #, или, по крайней мере, я так думаю, потому что я пишу операторы LINQ / выражений в значительной степени на ежедневной основе. [Вероятно, зависит от предпочтений команды / человека]

Прежде чем мы начнем рассматривать код, ознакомьтесь с некоторыми функциями, относящимися к LINQ:

Вышеупомянутое играет небольшую роль, чтобы помочь с операторами / выражениями LINQ.

Выражения запроса

Основываясь на приведенном выше коде, выражения запроса выглядят как select, что довольно круто. В приведенном выше выражении он возвращает список слов, в которых длина слов больше 4, а затем результат слов в верхнем регистре.

Лямбда-выражения

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

Когда использовать запрос или лямбда?

Если честно, это действительно зависит от ситуации. На самом деле у меня нет хорошего объяснения, какой из них выбрать, но я выбираю, исходя из сложности ситуации. Например, я, вероятно, использовал бы выражение запроса, когда нам нужно выполнять соединения между наборами данных, в то время как я, вероятно, использовал бы лямбда-выражения, когда я хочу сгруппировать по определенным свойствам.

В приведенном выше случае, когда я хочу объединиться между задачами Person и Person, чтобы получить список людей с их задачей, я, вероятно, выберу выражение запроса и выведу либо анонимный тип, либо какой-либо тип класса.

В случаях, когда мне нужно манипулировать объектом и начать группировку наборов данных, я, вероятно, выбрал бы лямбда-выражение, приведенный выше код превращает список PersonGroup в новый список, в котором он группирует людей по заданному значению группы.

Надеюсь, это было для вас проницательным! Пожалуйста, поделись своими мыслями.

Примечание. Я все еще учусь, и письмо на среднем уровне помогает мне анализировать мелочи, чтобы лучше понимать. Открыт для исправлений и / или комментариев, если я что-то написал неправильно. Спасибо!

Ресурсы

Https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-and-generic-types

Https://csharpindepth.com/

Http://www.dotnetperls.com/lambda

Https://www.c-sharpcorner.com/UploadFile/babu_2082/linq-operators-and-lambda-expression-syntax-examples/