【发布时间】:2014-02-11 04:26:43
【问题描述】:
我有这个匹配条件:
var matchConditions = new long[][]
{
new long[] { 109, 145 }, //color Id
new long[] { 202 }, // province Id
new long[] { 303, 309, 317, 318 }, //options Id
};
它们中的每一个都是不同组的 id,例如第一个嵌套数组用于颜色。
我需要知道哪些产品符合颜色 id 109 或 145,第二个是其他产品。
我的意思是我想获得满足每个组中任何项目的所有产品,
{color 109 或 145 - 和 - 省 202 - 和 - 选项 303 或 309 或 317 或 318}
我试过了:
matchConditions.ToList().ForEach(x => x.Any(j => adAdFields.Select(co => co.listFieldId).Contains(j)))
和
matchConditions.All(x => x.Any(j => adAdFields.Select(co => co.listFieldId).Contains(j)))
但它们都不起作用
编辑: 在此之前我有这个查询:
var adsWithRelevantadFields =
from adField in cwContext.tblAdFields
join ads in cwContext.tblAds on adField.adId equals ads.id
where (prvId == 0 && ads.tabId == tabId) ||
(prvId != 0 & ctsId.Value == 0 && ads.provinceId == prvId & ads.tabId == tabId) ||
(prvId != 0 & ctsId.Value > 0 && ads.provinceId == prvId & ads.cityId == ctsId.Value & ads.tabId == tabId)
where ads.endDate >= theToDay
where ads.conditionId == 1
where ads.payed == true
group adField by adField.adId into adAdFields
where searchIds.All(i => adAdFields.Select(co => co.listFieldId).Contains(i))
这很好用,但现在我需要搜索更多按我展示的方式分组的选项,所以我需要在查询末尾添加“&&”来搜索这些新项目,这是我的问题。
EDIT2
假设我现在有一些列表(颜色,谁生产,选项,哪里,......)当我想添加一个新产品时,以这些格式添加适当的属性(productId,attributeId),例如我有(1,109 - 1,202 - 1, 303 ...) 和 (2,109 - 2,202 - 2,318...) ...
所以当我对每个产品(真实的广告)进行分组时,我只需要检查哪些产品 grop:
{color 109 或 145 - 和 - 省 202 - 和 - 选项 303 或 309 或 317 或 318}
【问题讨论】:
-
你能告诉我们产品类的结构吗?
-
matchConditions.Length 总是 == 3 吗?
-
我更新了我的问题,广告字段按我的产品详细信息分组
-
@mrlucmorin,不,它是动态的。
-
@mohammadadibi 所以它总是 3 的倍数吗?我正在尝试了解您的设置。