在以下控制器中,我需要循环遍历List的每个元素。 MyVieModel有很多attrubutes(列),列表有数千行。因此,为简洁起见,我需要使用外环和内环。但是,VS2015
抱怨控制器中的以下行。我该如何解决这个问题?
for (var j = 0; j < testlist[i].Count(); j++){...}
的MyViewModel
不包含Count()的定义if (testlist[i][j] ....){...}
行:无法将带有[]的索引应用于MyViewModel类型的扩展程序
醇>
视图模型:
public class MyViewModel
{
[Key]
public int ProductId { get; set; }
public float laborCost { get; set; }
public float ManufCost { get; set; }
public float Price { get; set; }
....
....
}
控制器:
....
....
var testlist = (qry to load MyViewModel).ToList();
for (var i = 0; i < testlist.Count; i++)
{
for (var j = 0; j < testlist[i].Count(); j++)
{
if (testlist[i][j] ....)
{
....
....
}
}
}
答案 0 :(得分:1)
在您的代码testlist[i]
中是MyViewModel
类的实例。你不能简单地用for / foreach循环迭代它的所有成员(属性,方法等)。
1)使用System.Reflection获取对象中的属性列表(慢!)
2)从必需的属性值手动创建数组
var testlist = (qry to load MyViewModel)
.Select(x => new object[] { x.ProductId, x.laborCost, x.ManufCost ...})
.ToList();
您的模型将是List<object[]>
而不是List<MyViewModel>
3)手动检查所需的属性:
if (testlist[i].ManufCost ....)