Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите сделать запрос linq / 2 сообщений из 2, страница 1 из 1
05.10.2009, 19:36
    #36233776
musson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать запрос linq
Есть таблица 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
06.10.2009, 14:12
    #36235062
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать запрос linq
Может что не так, я только начинаю с 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
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите сделать запрос linq / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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