我试图避免3部分连接,我想直接到我的第3个表名,但我是linq to sql的新手,我不知道我需要如何设置一切正常工作。我正在做但不想做的一个例子是:
from x in currentLogs
join y in cDataContext.CategoryCountryCategoryTypeMappings
on x.CategoryCountryCategoryTypeMappingID equals y.CategoryCountryCategoryTypeMappingID
join cat in cDataContext.Categories
on y.CategoryID equals cat.CategoryID
where x.Response != 0 && cat.StorefrontID==storeID
select x).Count();
我想做的是:
from x in currentLogs
join y in cDataContext.Categories
on x.CategoryCountryCategoryTypeMappingID equals y.CategoryCountryCategoryTypeMapping.CategoryCountryCategoryTypeMappingID
where x.Response != 0 && y.StorefrontID==storeID
select x).Count();
但
时出错cat.CategoryCountryCategoryTypeMapping.CategoryCountryCategoryTypeMappingID
由我自动生成的dbml返回,Sequence是多个实体。
我的布局如下:
DownloadLog to cccmapping是一对一的,其他一切都是一对一的。我可能会把它搞砸了,但是downloadlog记录了一个cccMapping,其中cccmapping具有country类别和categorytypes的排列,每个排列都是唯一的。不确定是否使映射表成为一对一,或一对多。以太方式我是否设置了我的上下文来做我想做的事情?
答案 0 :(得分:0)
根据您的设置,您似乎可以使用导航属性。所以沿着这些方向应该有用。
currentLogs
.Where(log => log.Response != 0 &&
log.CategoryCountryCategoryTypeMappings
.Any(map => map.Categories
.Any(cat => cat.StoreFrontID == storeID))).Count();