Member 14169626 Ответов: 2

Как использовать лямбда-выражение в C#?


Я хочу преобразовать sql-запрос в лямбда-выражение.Как использовать лямбда-выражение этого запроса.

Таблица классов:
Удостоверение Личности,Имя,Фамилия

Школьный стол:
Id,Имя,Школьная Информация

Таблица Классов:
1 Alex   John  
1 Alex   Michael
1 Alex   Martin
2 Mary   Kelvin

Школьный Стол:
1 Alex
2 Mary
3 Justin


Что я уже пробовал:

Select distinct c.id as id,c.Name from class as c school as s where c.id=s.id order by 1

Как преобразовать в лямбда-выражение этот запрос.
Я хочу добиться результата:
1 Alex
2 Mary

Mohibur Rashid

Знаете ли вы, что такое лямбда-выражение?
Как бы вы поступили, если бы не использовали лямбда-выражение?

Ваш запрос неверен
Выбрать различные
Т.идентификатор как идентификатор ------- где у вас Т?
, Т.Название
от
класс как с
школа, как
где
гр.ИД=С. идентификатор
заказ на 1

Member 14169626

извините, что вопрос поднят c. лямбда-выражение x=>x.id например, написать запрос.
Но я не знаю отличия и комбинации этих двух таблиц

2 Ответов

Рейтинг:
0

Maciej Los

Извините, ваш вопрос неясен и/или ваша база данных неправильно спроектирована, потому что schoold.id и class.id не может быть равных! Модель базы данных должна выглядеть следующим образом:

1 School => ∞ YearBooks
1 YearBook => ∞ Classes
1 Class => ∞ Students

Итак, вам нужно как минимум 4 объекта (таблицы):
1. Yearbooks таблица - описание учебного года
2. Classes таблица - содержит все классы, каждая запись описывает класс за определенный учебный год
3. Students таблица - содержит всех зарегистрированных студентов, каждая запись описывает конкретного студента
4. StudentsInClass таблица - (многие ко многим отношениям между учащимися и классами) содержит ids класса и студента

Кстати: я бы рекомендовал заменить старомодное Программирование SQL
Select distinct c.id as id,c.Name
from class as c, school as s
where c.id=s.id
order by 1

к новому (используя Соединения[^]):
SELECT DISTINCT c.id as id, c.Name
FROM class as c
    INNER JOIN school as s ON c.id=s.id
ORDER BY c.id


Для получения более подробной информации, пожалуйста, смотрите: Визуальное представление SQL-соединений[^]

Когда вы закончите менять модель базы данных и запросы на правильные, я бы рекомендовал изучить этот сайт: http://linq101.nilzorblog.com/linq101-lambda.php[^]
Это может быть полезно для понимания того, как писать запросы Linq с использованием лямбда-выражений.


Рейтинг:
0

Rajat-Indiandotnet

Я надеюсь, что следующий способ поможет вам.

List<Student> _lstStudent = new List<Student>();
List<School> _lstSchool = new List<School>();
_lstSchool.Add(new School() { Id = 1, Name = "MVM" });
_lstSchool.Add(new School() { Id = 2, Name = "DPS" });
_lstSchool.Add(new School() { Id = 3, Name = "JHK" });

_lstStudent.Add(new Student() { Id = 1, SchoolID = 1, Name = "Rajat", Surname = "Jaiswal" });
_lstStudent.Add(new Student() { Id = 2, SchoolID = 1, Name = "Aayush", Surname = "Jaiswal" });
_lstStudent.Add(new Student() { Id = 3, SchoolID = 2, Name = "Aman", Surname = "Jaiswal" });
_lstStudent.Add(new Student() { Id = 4, SchoolID = 3, Name = "Bittu", Surname = "Jaiswal" });



var tmp = from aStudent in _lstStudent
          join aSchool in _lstSchool on aStudent.SchoolID equals aSchool.Id
          select new
          {
              aStudent.Id,
              aStudent.Name,
              aStudent.Surname,
              SchoolName = aSchool.Name
          };

var tmp1 = _lstStudent.Join(_lstSchool, aStudent => aStudent.SchoolID,
                                        aSchool => aSchool.Id,
                                        (aStudent, aSchool) => new
                                        {
                                            aStudent.Id,
                                            aStudent.Name,
                                            aStudent.Surname,
                                            SchoolName = aSchool.Name
                                        });

foreach (var a in tmp)
{
    Console.WriteLine("Student Name {0} and Surname  {1}  Study in {2} school",a.Name, a.Surname,a.SchoolName);

}

Console.ReadKey();