我如何解释(严重?)?
我有一个名为“规则”的实体,它是一些用于从POCO []中挑选项目的“选择器”。有一定数量的字段可供选择。所有这些都在我的数据库对象中详细说明。
我需要在网格中显示规则,每个规则都是一行,POCO中的每个字段都是一列。有些单元格会包含一个选择器,有些则不会。
我选择使用fields.groupJoin(selectors.defaultIfEmpty)来获取我需要的单元格内容:
var keyValuesS =
fields
.GroupJoin(
SelectorView.Search(new SelectorViewFilter { RuleId = rule.Id }),
f => f.Id,
s => s.FieldId,
(f, g) => g
.Select(s => new {
key = f.Name + "_S",
value = GetToString(f, s) //gets the cell content html
})
.DefaultIfEmpty(new {
key = f.Name += "_S",
value = "<div style='position:relative;height:100%;width:100%'></div>" }) //empty cell
)
.SelectMany(g => g)
.ToDictionary(f => f.key, f => f.value);
我期望的是一个字典,每个字段的键为'[field] _S',值为完整的单元格内容或默认的空单元格。
我实际得到的是具有选择器的单元格为'[field] _S_S'但值正确。
在第二个表格中加入我联盟,'adjusters'(与'选择器'格式相同,但键有_A)然后我得到了各种各样的混乱。为了在伤口擦盐,我自己的代码一直叫我_A_S_S!
之前我有一个类似的格式,但它的长度是10倍,创建了html但是有效。现在我已经重构了,相同的逻辑不再有效。
我确信我必须在代码中看不到简单的错误。请告诉我,这样我可能会感到尴尬,然后继续进行项目^ _ ^
仅供参考:这是包含工会的方法:
public static EditableRule PopulateByRule(Rule rule, Field[] fields)
{
var keyValuesA =
fields
.GroupJoin(
AdjustmentView.Search(new AdjustmentViewFilter { RuleId = rule.Id }),
f => f.Id,
a => a.FieldId,
(f, g) => g
.Select(a => new { key = f.Name + "_A", value = GetToString(f, a) })
.DefaultIfEmpty(new { key = f.Name += "_A", value = "<div style='position:relative;height:100%;width:100%'></div>" })
)
.SelectMany(g => g);
var keyValuesS =
fields
.GroupJoin(
SelectorView.Search(new SelectorViewFilter { RuleId = rule.Id }),
f => f.Id,
s => s.FieldId,
(f, g) => g
.Select(s => new { key = f.Name + "_S", value = GetToString(f, s) })
.DefaultIfEmpty(new { key = f.Name += "_S", value = "<div style='position:relative;height:100%;width:100%'></div>" })
)
.SelectMany(g => g);
var keyValuesBoth = keyValuesA.Union(keyValuesS);
var dictionary = keyValuesBoth.ToDictionary(f => f.key, f => f.value);
return new EditableRule(rule.Id, rule.DisplayText, dictionary);
}
谢谢^ _ ^
答案 0 :(得分:1)
我刚刚发现了我的愚蠢错误
DefaultIdEmpty键有&#34; + =&#34;但应该只是+&gt; _&lt;