0

これを行うには、簡略化されたクエリの結果をループします。

var query = from myrecord in dt.AsEnumerable()
    where myrecord.Field<string>("field1") == "value1" || myrecord.Field<string>("field1") == "value2"
    select myrecord;

foreach(var myrecord in query)
{
    //if value1, then "X"
    //sum += field2
}

しかし、それがLINQステートメント内で可能かどうかを知りたいです。

名前と値の2つのメンバーを持つ匿名クラス。名前はfield1に応じて「X」または「Y」であり、Valueは条件が満たされたレコードのすべてのfield2値の合計です。Count()メソッドを使用する必要があると思いますが、方法や場所がわかりません。一時テーブルからカウントを取得するには、「group」と「into」を使用する必要があるかもしれません。

(field1 == "value1")のレコードがある場合、文字列は "X"になり、そうでない場合、文字列は"Y"になります。

var query = from table in dt.AsEnumerable()
    where table.Field<string>("field1") == "value1" || 
        table.Field<string>("field1") == "value2"
    select new
    {
        Name = (condition ? "X" : "Y"),
        Value = //sum all field2 values
    };

前もって感謝します!

4

3 に答える 3

0

すでに持っている「テーブル」変数を使用するだけです。

var query = from table in dt.AsEnumerable() 
where table.Field<string>("field1") == "value1" ||  
    table.Field<string>("field1") == "value2" 
select new 
{ 
    Name = (table.whatever ? "X" : "Y"), 
    Value = table.something.Sum()
}; 
于 2010-03-02T17:46:44.707 に答える
0

確かに、次のサンプルは同様に機能します

class Program
    {
        static void Main(string[] args)
        {
            List<Person> persons= new List<Person>();
            var result = from p in persons
            select new
             {
              Name = (s.IsMarried ? s.X : s.Y)
             };
        }
    }
    class Person
    {
        public bool IsMarried { get; set; }
        public string X { get; set; }
        public string Y { get; set; }
    }
于 2010-03-02T17:39:57.497 に答える
0

あなたはただすることによってテーブルの合計を得ることができます

table.Sum(t => t.ValueToSum) //Or whatever sub-table you need to sum
于 2010-03-02T18:23:13.977 に答える