2016-02-08 2 views
2

Я пытаюсь написать версию Linq скрипта SQL ниже. Но я не мог этого сделать. Я не мог сделать часть SUBQUERY. Таблицы T_PROJECT и T_SERVICE_TRANSACTION связаны друг с другом PROJECT_ID и P.ID, это внешний ключ. Как я могу написать версию Linq?необходимо выполнить подзапрос в Linq

SELECT P.PROJECT_NAME, P.TOTAL_TIME, 
    (
     P.TOTAL_TIME - (SELECT SUM(GIVEN_SERVICE_TIME) 
         FROM T_SERVICE_TRANSACTION 
         WHERE PROJECT_ID=P.ID) 
    ) 
FROM T_PROJECT P 
+0

ли вы ваши классы сущностей выглядеть? –

ответ

3

Попробуйте что-то вдоль этих линий ..

var result = Project.Select(p => new { 
    ProjectName = p.ProjectName, 
    TotalTime = p.TotalTime, 
    CustomColumn = p.TotalTime - p.T_Service_Transactions 
     .Sum(t=> t.GivenServiceTime) 
}); 
+0

Большое спасибо, я думаю, что это сработает, но я получаю ошибку ..... System.InvalidOperationException: элемент модели, переданный в словарь, имеет тип «System.Collections.Generic.List'1 [<> f__AnonymousType1'10 [System.String, System.Nullabl ...... –

+1

@ARIFYILMAZ Нет проблем! Я не совсем уверен в ошибке, не видя остальную часть вашего кода, но вам может потребоваться проецировать результаты в ваш собственный тип, если вы используете результаты в другом месте. Похоже, у вас есть типизированный словарь, который не собирается принимать список или анонимный тип внутри списка. Вы можете использовать метод .ToDictionary - первый аргумент создает ключ (возможно, p => p.ProjectName), второй - значение, которое должно соответствовать типу, ожидаемому вашим словарем. –

Смежные вопросы