powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ: WHERE IN (INTEGER)
3 сообщений из 3, страница 1 из 1
LINQ: WHERE IN (INTEGER)
    #39456801
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблицы:
Код: c#
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.
    [Table("Projects")]
    public class Project
    {
        [Key]
        public int? ProjectID { get; set; }
        [Required]
        public string ProjectName { get; set; }
    }

    [Table("ProjectEmployees")]
    public class ProjectEmployee
    {
        [Key]
        public int? ProjectEmployeeID { get; set; }

        [Display(Name = "Проект")]
        [Required]
        public int ProjectID { get; set; }
        [ForeignKey("ProjectID")]
        public virtual Models.Sklad.Proj.Project project { get; set; }

        [Display(Name = "Сотрудники")]
        [Required]
        public int DirEmployeeID { get; set; }
        [ForeignKey("DirEmployeeID")]
        public virtual Models.Sklad.Dir.DirEmployee dirEmployee { get; set; }
    }


Проект и связанные с ним сотрудники.


Нужно такой запрос перевести в LINQ
Код: sql
1.
2.
3.
4.
5.
6.
SELECT * FROM Projects AS p
WHERE p.ProjectID IN 
(
 SELECT ProjectID FROM ProjectsDirEmployees pe 
 WHERE pe.DirEmployeeID=5
)




То есть сделать что-то на подобие такого:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var queryProjectID =
    (
        from x in db.ProjectEmployees
        where x.DirEmployeeID == field.DirEmployeeID
        select new
        {
            ProjectID = x.ProjectID.ToString()
        }
    ).ToList();

query = query.Where(x => queryProjectID.Contains(x.ProjectID.ToString()));


(этот код не работает)
...
Рейтинг: 0 / 0
LINQ: WHERE IN (INTEGER)
    #39456809
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо было так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var queryProjectID =
    (
        from x in db.ProjectEmployees
        where x.DirEmployeeID == field.DirEmployeeID
        select x.ProjectID
    ).ToList();

query = query.Where(m => queryProjectID.Contains(m.ProjectID.Value));
...
Рейтинг: 0 / 0
LINQ: WHERE IN (INTEGER)
    #39456810
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select x.ProjectID
и
m.ProjectID.Value
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ: WHERE IN (INTEGER)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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