我有 2 个列表,一个存储可过滤列的名称(DropDown 类型),另一个存储要加载到这些可过滤列中的值。
List<string> filterableFields = new List<string>() { "A_B", "C_D", "E_F" };
List<string> AB, CD , EF;
现在在运行时,我从 Web 服务获取数据,并编写了一个函数来提取这些可过滤字段的值并将值存储到第二个列表。
private void prepareListForFilterableColumns(XDocument records)
{
foreach (var currentField in filterableFields)
{
var values = (from xml in records.Descendants(z + "row")
let val = (string)xml.Attribute("ows_" + currentField.Replace("_", "_x0020_"))
where val != ""
orderby val
select val
).Distinct();
switch (currentField)
{
case "A_B": AB = values.ToList(); break;
case "C_D": CD = values.ToList(); break;
}
}
}
现在我在想,与其在块中对分配进行硬编码,swtich case
不如使用第一个列表名称“A_B”并从中替换“_”以指向我的第二个列表并分配values.ToList()
给它。
我知道 c# 是一种静态语言,所以不确定我们是否可以实现这一点,但如果可以的话,它将使我的函数通用。
非常感谢您的时间和帮助。
维沙尔