【发布时间】:2012-11-11 06:46:07
【问题描述】:
foreach (Dimension dimensions in Enum.GetValues(typeof(Dimension)))
{
var r = new ReferenceTable(dimensions).referenceItems;
List<TVRawDataRecord> qry = TVRawDataList.Where(p => !r.Any(d => d.Value == p.BrandVariant))
.ToList();
DimensionItem di = new DimensionItem(qry, dimensions);
newDimensions.Add(di);
}
我正在尝试创建一个 Linq 查询,将 TVRawDataRecords 列表与 Dimensions 枚举中的列表进行比较,如果没有匹配项,则将它们添加到新的 DimensionIem 列表中。这一切都很好,但我需要在我的Where 语句中用维度枚举值动态替换p.BrandVariant,因为维度值与TVRawDataRecord 属性名称相同。这意味着我可以只用这几行代码循环 8 个维度等。
谁能解释我如何在 Where 语句中包含维度?谢谢!
【问题讨论】:
-
为什么不用代码中的维度值替换属性?当你这样做时会发生什么?什么不工作?
-
维度值是我所关注的字段的名称,所以我实际上是在尝试在每个循环中将 p.BrandVariant 替换为 'p + dimension'。
-
只是编译。你检查过自己吗?您的意思是
p.Dimension与Dimension枚举一致?那根本不是问题?你试过了吗? -
我的问题是在每个 foreach 循环上用等效的 'p.BrandVariant 动态替换 p.BrandVariant。 + dimension' 所以第一遍将是 p.BrandVariant,然后是 p.Creative 等等 - 每个枚举都有一个。所以我认为问题是如何动态更新 Where 语句。
-
那么 p.Property 和 Dimension 枚举之间的联系是什么?哪个枚举值映射到 p 的哪个属性?还是它们只是一个接一个,等等?