powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Переделать SQL в LINQ
6 сообщений из 6, страница 1 из 1
Переделать SQL в LINQ
    #38428826
skyline-09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица Employees, которая состоит из id(string),version(string),viewedname(string),post(string),datestart(datatime),datechange(datatime),senior(string),failed(bool). ПК id,version.
Надо переделать в LINQ следующий запрос:

select * from employees a
where id=a.id and version=(select max(version) from employees where id=a.id and failed=0)

Linq запрос должен быть в виде цепочки:

Employees = repository.Employees.Where(p => team == null || p.Team == team).
OrderBy(p => p.DateChange)
...
Рейтинг: 0 / 0
Переделать SQL в LINQ
    #38428855
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
var q = Employees.Join(
Employees.Where(em => (em.failed == 0) ).GroupBy(u => u.id).Select(grp => new {id= grp.Key, version= grp.Max(t => t.version)})
,e => new {e.id, e.version}
,o => new {o.id, o.version}
,(e, o) => e
);



не проверял, но... ваш селект странен... ваш линк не коррелирует с приведенным селектом ну ни как...
...
Рейтинг: 0 / 0
Переделать SQL в LINQ
    #38428869
skyline-09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ, попробую!
...
Рейтинг: 0 / 0
Переделать SQL в LINQ
    #38430814
skyline-09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает((
...
Рейтинг: 0 / 0
Переделать SQL в LINQ
    #38430903
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что именно? Не работает :)
...
Рейтинг: 0 / 0
Переделать SQL в LINQ
    #38430927
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
/* Тестовая таблица */
CREATE TABLE [dbo].[Employee](
	[id] [int] NOT NULL,
	[version] [int] NOT NULL,
	[failed] [bit] NOT NULL,
	[name] [nchar](10) NULL
) ON [PRIMARY]


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
/* Ентить */
public class Employees
{
	public int Id {grt; set;}
	public int Version {grt; set;}
	public  bool Failed {grt; set;}
	public string Name  {grt; set;}
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
/* Запросец */
var q = Employees.Join(
Employees.Where(em => !em.Failed ).GroupBy(u => u.Id).Select(grp => new {Id= grp.Key, Version= grp.Max(t => t.Version)})
,e => new {e.Id, e.Version}
,o => new {o.Id, o.Version}
,(e, o) => e
);

q.ToList();


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
/*
 Запрос на выходе
*/
SELECT [t0].[id] AS [Id], [t0].[version] AS [Version], [t0].[failed] AS [Failed], [t0].[name] AS [Name]
FROM [Employee] AS [t0]
INNER JOIN (
    SELECT MAX([t1].[version]) AS [value], [t1].[id]
    FROM [Employee] AS [t1]
    WHERE NOT ([t1].[failed] = 1)
    GROUP BY [t1].[id]
    ) AS [t2] ON ([t0].[id] = [t2].[id]) AND ([t0].[version] = [t2].[value])
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Переделать SQL в LINQ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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