2010-01-20 1 views
5

мне нужно сделать что-то вроде следующегоподзапросов в LINQ, что это в отборном заявлении, не где положение

SELECT p.name, 
    (SELECT COUNT(p.id) FROM products WHERE products.parent_id = p.id) AS sub_products 
FROM products AS p 

Я вижу много примеров LINQ подзапросов в выражении WHERE, но ничего подобного, где это в предложении select.

ответ

3

Этот запрос должен быть эквивалентен:

var query = Products.Select(p => new { 
         p.Name, 
         SubProducts = Products.Count(c => c.parent_id == p.id) 
        }); 

foreach (var item in query) 
{ 
    Console.WriteLine("{0} : {1}", item.Name, item.SubProducts); 
} 
+0

Обратите внимание, что с помощью подзапросов в выберите не работает для меня в LINQPad, но работает с C# проекта. – eka808

+1

@ eka808 это странно, он отлично работает для меня, и я никогда не сталкивался с такими ограничениями. Возможно, вы можете задать вопрос об этом. –