0

こんな問い合わせがあります

var values = ProjectContext.controloptions.Where(i => i.id == id).Select(i => new {

          i.value
        }).ToList();

現在、値には4つのレコードが含まれています。次のようにさらに2つのレコードを追加したい

  values.Insert(0, new { "Select" });
  values.Add("AddNew");

しかし、それはエラーを示しています。i.valueデータベース内のvarcharフィールドはどこにありますか。

追加のフィールドなしで 2 つのレコードをリストに追加するにはどうすればよいですか。

4

1 に答える 1

1

匿名型を選択しています。次のように、プロパティの名前とそのタイプを一致させることによってのみ、このタイプの別のオブジェクトを追加できます。

var values = new[]{ new Options{value = 666, id = 5}} //array to demo purposes
                .Where(i => i.id == 5)
                .Select(i => new {
                              value = i.value.ToString()
                })
                .ToList();

values.Add(new {value = "Select"}); 
values.Insert(0, new {value = "AddNew"});

匿名型の 3 つのオブジェクト ( type のvalues1 つのプロパティ) が含まれるようになり、次のように出力できます。valuestring

AddNew 
666 
Select 

次のように、新しいカスタム クラスを作成し、それをSelectプロジェクションで使用することを検討してください。

class MyCustomClass
{
    public string Value { get; set; }
}

そして、このオブジェクトを作成しますSelect

List<MyCustomClass> values = new[]{ new Options{value = 666, id = 5}}
                .Where(i => i.id == 5)
                .Select(i => new MyCustomClass {
                              Value = i.value.ToString()
                    })
                .ToList();

values.Add(new MyCustomClass { Value = "Select"});              
values.Insert(0, new MyCustomClass { Value = "AddNew"});

リストは名前付きのタイプList<MyCustomClass>になり、名前付きのクラスを使用して要素を追加および削除できるようになりました

于 2013-03-25T07:33:36.710 に答える