powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите сделать запрос linq
2 сообщений из 2, страница 1 из 1
Помогите сделать запрос linq
    #36233776
musson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица Topics

ID PK
Title
Message
ParentId
StaffId

когда ParentId =0 это заголовки тем
когда ParentId = Id значит это сообщение
мне нужно выбрать все темы и сообщения к этим темам для определенного сотрудника(StaffId)
счас я делаю так var title= entity.topic(t=>t.StaffId==2 && ParentId==0) - забираем все заголовки для данного сотрудника потом для каждой записи подгружаю сообщения
foreach(var item in title)
{
var messags = entity.topic(t=>t.parentId==item.Id)
ну и потом обьединяю message и title
}

Собсвенно это очень криво. много времени тратится на подобную выборку, как это сделать за один запрос?
...
Рейтинг: 0 / 0
Помогите сделать запрос linq
    #36235062
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может что не так, я только начинаю с LINQ знакомиться

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
class Table
    {
        public Table() 
        {
        }
        public Table(int _id, int _personID, int? _parentID) 
        {
            id = _id;
            personID = _personID;
            parentID = _parentID;
        }

        public int id;
        public int personID;
        public int? parentID;
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<Table> myArr = new List<Table>();
            myArr.AddRange(new Table[] {new Table(1, 1, null), new Table (2, 1, 1),
                new Table(3, 2, 1), new Table(4, 2, null), new Table(5, 2, 4)});

            var result = from title in myArr
                         join message in myArr on title.id equals message.parentID into tempTable
                         from TitleMessages in tempTable.DefaultIfEmpty()
                         where title.personID == 1
                         where !title.parentID.HasValue
                         select new
                         {
                             MessageID = (TitleMessages == null ? (object)null : (object)TitleMessages.id),
                             TitleID = title.id,
                             PersonID = (TitleMessages == null ? (object)null : (object)TitleMessages.personID)
                         };

            Console.WriteLine("TitleID MessageID PersonID");
            foreach (var t in result)
            {
                Console.WriteLine("{0,4}{1,9}{2,8}", t.TitleID, t.MessageID, t.PersonID);
            }


            
        }
    }
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите сделать запрос linq
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]