-1

私のコードでは、result値を入れるのに助けが必要ですoList

NorthwindDataContext db = new NorthwindDataContext();
List<Category> oList = new List<Category>();
var result = from p in db.Categories
         select new { CategoryID = p.CategoryID, CategoryName=p.CategoryName };

oList結果値で埋めたい。

4

3 に答える 3

1

結果には、リストに必要なオブジェクト全体が含まれていません。したがって、代わりに次のことができます。

 NorthwindDataContext db = new NorthwindDataContext();
            List<Category> oList = new List<Category>();
            oList.AddRange(db.Categories);

リストへの追加が厳密に必要でない場合は、次のように結果セットをリストに変換できます。

 NorthwindDataContext db = new NorthwindDataContext();
            List<Category> oList = db.Categories.ToList();

ただし、これはサンプル コードであることを知っておく必要があります。このようにテーブル全体をプルすることは、おそらく最善の方法ではありません (テーブル内の固定数のレコードが変更されず、それらすべてをメモリに安全にロードできることがわかっている場合を除きます)。

于 2011-10-10T06:27:15.897 に答える
0
NorthwindDataContext db = new NorthwindDataContext();
        List<Category> oList = db.Categories.ToList();

編集:

Categoryクラスが自分のものであると仮定する

NorthwindDataContext db = new NorthwindDataContext();
        List<Category> oList = db.Categories.Select(p => new Category { CategoryID = p.CategoryID, CategoryName=p.CategoryName }).ToList();
于 2011-10-10T06:27:24.643 に答える
0

現在、結果は匿名型のコレクションです。代わりにカテゴリを返す必要があります。

NorthwindDataContext db = new NorthwindDataContext();
            List<Category> oList = new List<Category>();
            var result = from p in db.Categories
                         select new Category { CategoryID = p.CategoryID, CategoryName=p.CategoryName };

その後、カテゴリを oList に追加できます -

oList.AddRange(result.ToList());

編集:

データベースからいくつかのフィールドのみを取得したい場合は、それらのフィールドのみを使用して新しいタイプを作成します (メソッドの外で使用する必要がない場合は、これを行う必要はありません。そのままにしておきます匿名型として) -

class CategorySml
{
  public int CategoryID {get; set;}
  public string CategoryName {get; set;}
}

...

NorthwindDataContext db = new NorthwindDataContext();
            List<CategorySml> oList = new List<Category>();
            var result = from p in db.Categories
                         select new CategorySml { CategoryID = p.CategoryID, CategoryName=p.CategoryName };
于 2011-10-10T06:28:06.130 に答える