1

私のアプリケーションは、Entity Framework を使用した asp.net MVC3 です。次を使用して、テーブルから 1 つの列のリストを配列として取得しようとしています。

   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;  
        }

2 つのエラーが表示されます。

Cannot apply indexing with [] to an expression of type 'caseprog.Models.CasesProgress' and
The name 'Learner_ID' does not exist in the current context

あなたの提案をいただければ幸いです。

4

4 に答える 4

3

おそらく、CasesProgressオブジェクトのプロパティ名を読む必要があります

これを変える

sList.Add(row[0].ToString());

sList.Add(row.YourPropertyNameHereWhichIsOfStringType);

プロパティが文字列型でない場合 (例: Integer / decimal ) ToString()、それにメソッドを適用してから、文字列コレクションに追加できます。

sList.Add(row.Learner_ID.ToString());

数値型のクラスLearner_IDのプロパティであると仮定します。CasesProgress

于 2012-09-20T19:04:20.757 に答える
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 を追加する必要があります。

于 2012-09-20T19:04:30.673 に答える
1
The name 'Learner_ID' does not exist in the current context 
GetSeriesList(Learner_ID);

Learner_ID - GetSeriesList(string item) のパラメーターが使用されていない (パラメーターも削除する) ため、アクションで定義されておらず、削除できます。

Cannot apply indexing with [] to an expression of type 'caseprog.Models.CasesProgress'

行はforeachコレクションとは別のアイテムであるため、ドット表記のプロパティでアクセスする必要がありますrow.Property

于 2012-09-20T19:07:47.627 に答える
0

シンプルに保ち、「通常の」構文を使用しないのはなぜですか


var list = db.CasesProgresses.Select(o=>o.YourPropertyName).ToList();

それが int で、文字列リストとして必要な場合は、上記の YourPropertyName を YourPropertyName.ToString() に置き換えるだけです

于 2012-09-20T19:39:52.707 に答える