我有我的LINQ如下:的LINQ集團通過數單列
from ucd in UserCategoryDetails
join uc in UserCategories on ucd.UserCategoryDetailsID equals
uc.UserCategoryDetailsID into ucj from uc in ucj.DefaultIfEmpty()
join uct in UserCategoryTypes on ucd.UserCategoryTypeID equals
uct.UserCategoryTypeID
join cc in UserCategoryColours on ucd.UserCategoryColourID equals
cc.UserCategoryColourID
where
ucd.UserCategoryTypeID == 2 &&
ucd.UserID == 1
group ucd by new {
ucd.UserCategoryDetailsID,
ucd.CategoryName,
cc.UserCategoryColourID,
cc.ImageSrcLarge,
cc.ImageSrcSmall
} into g
select new {
UserCategoryDetailsID = g.Key.UserCategoryDetailsID,
CategoryName = g.Key.CategoryName,
CategoryColourID = g.Key.UserCategoryColourID,
ImageSrcLarge = g.Key.ImageSrcLarge,
ImageSrcSmall = g.Key.ImageSrcSmall,
CategoryCount = g.Count()
}
麻煩的是Count()
生成SQL是COUNT(*)
,這是搞亂的結果,因爲它返回1時,在沒有行UserCategories。
有人可以告訴我如何生成COUNT(uc.ProjectID)
的LINQ等價物嗎?基本上,下面的SQL語句,但在LINQ:
SELECT
[t0].[UserCategoryDetailsID], [t0].[CategoryName],
[t3].[UserCategoryColourID], [t3].[ImageSrcLarge],
[t3].[ImageSrcSmall], COUNT([t1].ProjectID) AS [CategoryCount]
FROM
[UserCategoryDetails] AS [t0]
LEFT OUTER JOIN [UserCategory] AS [t1] ON
[t0].[UserCategoryDetailsID]) = [t1].[UserCategoryDetailsID]
INNER JOIN [UserCategoryType] AS [t2] ON
[t0].[UserCategoryTypeID] = [t2].[UserCategoryTypeID]
INNER JOIN [UserCategoryColour] AS [t3] ON
[t0].[UserCategoryColourID] = [t3].[UserCategoryColourID]
WHERE
([t0].[UserCategoryTypeID] = 2) AND ([t0].[UserID] = 1)
GROUP BY
[t0].[UserCategoryDetailsID], [t0].[CategoryName],
[t3].[UserCategoryColourID], [t3].[ImageSrcLarge],
[t3].[ImageSrcSmall]
這是LINQ到SQL或LINQ到實體?這些對象是否具有彼此之間的導航屬性? –