Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ: WHERE IN (INTEGER) / 3 сообщений из 3, страница 1 из 1
21.05.2017, 10:41
    #39456801
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ: WHERE IN (INTEGER)
Есть таблицы:
Код: 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
21.05.2017, 11:02
    #39456809
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ: WHERE IN (INTEGER)
Надо было так:
Код: 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
21.05.2017, 11:03
    #39456810
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ: WHERE IN (INTEGER)
select x.ProjectID
и
m.ProjectID.Value
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ: WHERE IN (INTEGER) / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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