1

linqを使用するC#では、次のようなクエリがあります。

var result = from p in cart select new { p.Product.Title, p.Product.Price };

今、私は結果にいくつかの別のアイテムを追加したいと思います。たとえば、次を追加します。

int weight;
string message;

私は次のようなものを持つことができます:

foreach( var r in result)
{
   dosomething(r.weight;)
   dosomething(r.message);
   dosomething(r.title);
   dosomething(r.price);
  }

出来ますか?どうすればいいですか?

4

4 に答える 4

7

新しいアイテムを作成する必要があります。代わりにこのようなことをしていただけませんか?

var result = from p in cart select new { Title = p.Product.Title,
                                         Price = p.Product.Price,
                                         Weight = 0,
                                         Message = null }; 
于 2012-04-26T17:19:23.887 に答える
2

匿名型の新規作成を選択して、プロパティが作成されたら追加できないようにしますが、できることの 1 つは、独自の型を作成してクエリでプロパティ値を割り当て、後で他のプロパティ値を割り当てることです。

//your class will be 
class MyClass
{
     float weight {get;set;}
     string Title {get;set;}
     float price {get;set;}
     string message {get;set;} 
}


   //select new will be     
    select new MyClass
    {
        Title =  p.Product.Title,
        price =  p.Product.Price,
        weight = 0,
        message = string.empty
    }
于 2012-04-26T17:19:38.490 に答える
1

そんなことはできません。匿名型は通常の型であり、コンパイル時に修正されます。後で変更することはできません。


編集:結果セットのコンテナ クラスを作成し、それに基づいて選択できます: class MyResult

class MyResult
{
    public string Title { get; set; }
    public double Price { get; set; }
    public double Weight { get; set; }
    public string Message { get; set; }
}

そして、次を使用できます。

    var query = from t in cart
                select new MyResult
                {
                    Title = t.ProductTitle,
                    Price = t.Product.Price
                };

後で行うことができます:

foreach( var r in result)
{
   dosomething(r.Wight;)
   dosomething(r.Message);
   dosomething(r.Title);
   dosomething(r.Price);
  }
于 2012-04-26T17:19:35.557 に答える
0

次のことができます。

var result = from p in cart select new { p.Product.Title, p.Product.Price, Weight = 55, Message ="message" };
于 2012-04-26T17:20:11.377 に答える