我有一个 MVC 应用程序,其中一个页面上有一个动态表,用户定义了表有多少列、列顺序以及从哪里获取每个字段的数据。
我写了一些非常糟糕的代码来保持动态,现在我希望它更有效率。
我的问题是我不知道如何定义我应该在运行时回到我的 IEnumerable 的列。我的主要问题是我不知道我可能有多少列。
我有一个获取字段文本的类的引用。我还有一个包含每个字段顺序的字典,其中包含确切的属性它应该从中获取数据。
我的代码应该是这样的:
var docsRes3 = from d in docs
select new[]
{
for (int i=0; i<numOfCols; i++)
{
gen.getFieldText(d, res.FieldSourceDic[i]);
}
};
其中:
docs = 我只想从中获取特定字段
的
列表 res.FieldSourceDic = 字典,其中键是列的顺序,值是属性
gen.getFieldText = 获取实体和属性的函数和返回值
显然,它不起作用。
我也试过
StringBuilder fieldsSB = new StringBuilder();
for (int i = 0; i < numOfCols; i++)
{
string field = "d." + res.FieldSourceDic[i] + ".ToString()";
if (!string.IsNullOrEmpty(fieldsSB.ToString()))
{
fieldsSB.Append(",");
}
fieldsSB.Append(field);
}
var docsRes2 = from d in docs
select new[] { fieldsSB.ToString() };
它也没有工作。
到目前为止,唯一对我有用的是:
List<string[]> docsRes = new List<string[]>();
foreach (NewOriginDocumentManagment d in docs)
{
string[] row = new string[numOfCols];
for (int i = 0; i < numOfCols; i++)
{
row[i] = gen.getFieldText(d, res.FieldSourceDic[i]);
}
docsRes.Add(row);
}
知道如何将 linq 传递给字段列表,它会有效地从中删除所需的数据吗?
谢谢,锄头我很清楚我需要什么....