我的应用程序是使用Entity Framework的asp.net MVC3。我试图使用以下内容从表中获取一列的列表:
public ActionResult Index()
{
//var list = db.CasesProgresses.ToList();
var SeriesList = GetSeriesList(Learner_ID);
return View();
}
public List<string> GetSeriesList(string item)
{
// get DataTable dt from somewhere.
List<string> sList = new List<string>();
foreach (CasesProgress row in db.CasesProgresses)
{
sList.Add(row[0].ToString());
}
return sList;
}
我收到两个错误:
Cannot apply indexing with [] to an expression of type 'caseprog.Models.CasesProgress' and
The name 'Learner_ID' does not exist in the current context
非常感谢您的建议。
答案 0 :(得分:3)
您可能需要阅读CasesProgress
对象的属性名称
更改此
sList.Add(row[0].ToString());
到
sList.Add(row.YourPropertyNameHereWhichIsOfStringType);
如果属性不是字符串类型,( ex:Integer / decimal ),您可以对其应用ToString()
方法,然后添加到字符串集合中。
sList.Add(row.Learner_ID.ToString());
假设Learner_ID
是具有数字类型的CasesProgress
类的属性。
答案 1 :(得分:1)
foreach (CasesProgress row in db.CasesProgresses)
{
sList.Add(row.SomePropertyYouNeed.ToString());
}
如果您使用foreach,则没有[0]
。如果你使用正常的for (int i =0; i < list.Count; i ++;)
那么你就可以做到这一点。但是当然,你必须将0
改为i
,你仍然需要访问一个属性。如果你的List有不同的类型,你就不会有来做这件事,但在你当前的例子中你需要添加一个String。
答案 2 :(得分:1)
The name 'Learner_ID' does not exist in the current context
GetSeriesList(Learner_ID);
Learner_ID - 未在您的操作中定义,您可以将其删除,因为未使用GetSeriesList(字符串项)中的参数(也是删除参数)。
Cannot apply indexing with [] to an expression of type 'caseprog.Models.CasesProgress'
在foreach
行中,这是与集合中的单独项目,这就是您使用点符号row.Property
按属性访问它的原因。
答案 3 :(得分:0)
为什么不保持简单并使用'通常'语法
var list = db.CasesProgresses.Select(o=>o.YourPropertyName).ToList();
如果它是一个int而你需要它作为字符串列表,只需用上面的YourPropertyName.ToString()替换YourPropertyName