1

サービスからデータテーブルを取得しています。新しい列の合計を計算するためにlinqを使用しています。もともとデータテーブルのすべてのカウントに加えて、linq で計算された新しい列が必要です。

問題は、データテーブルの列が修正されていないことです。linq の select 句に列を動的に追加するにはどうすればよいですか。

以下はコード スニペットです。

DataTable dt = ds.Tables[0];
var orderCtr =
from o in dt.AsEnumerable()
where o.Field<string>(Constants.GENDER_NAME) != "Unknown"
group o by new
{
                    odr_id = o.Field<int>(Constants.ORDER_ID),
                    //NEED TO ADD COLUMNS DYNAMICALLY HERE. MEANS IF THEY ARE IN DATATABLE.
                }
                    into g
                    select new
                    {
                         //NEED TO ADD COLUMNS DYNAMICALLY HERE. MEANS IF THEY ARE IN DATATABLE.
                        odr_id = g.Key.odr_id,
                        ac_gr_imp = g.Sum(r => r.Field<long>(Constants.GENDER_IMPRESSION)),
                        ac_gr_clk = g.Sum(r => r.Field<long>(Constants.GENDER_CLICK)),
                        Ctr = (double)g.Sum(r => r.Field<long>(Constants.GENDER_IMPRESSION)) / g.Sum(r => r.Field<long>(Constants.GENDER_CLICK)),
                    };
4

1 に答える 1

-1

Dynamic LINQ ライブラリに興味があるかもしれません。動的 LINQ を使用すると、文字列を作成してクエリまたはクエリの一部を指定できます。

Scott Guthrie は 2008 年にそれについて説明しました ( http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx ) 。また、.NET 4 ( http://www.nuget.org/packages/System.Linq.Dynamic )を使用する場合に備えて、NuGet パッケージもあります。

于 2013-09-17T07:01:16.507 に答える