分類:[C#]
2019/02/09(Sat) 00:24:35 編集(投稿者)
いつもお世話になっています。
DBから抽出したデータと、加工用にDataTableにセットしたデータを
JOINしたときに、エラーが出たので質問させてください。
まず、DBからマスタを取得し格納するクラスがあります。
このマスタクラスと、データをjoinして、
結果を取得したいのですが、思い通りになりません。
例えば
class Shohin
{
public Shohin(string code, string name)
{
this.code = code;
this.name = name;
}
public string code { get; set; } // 商品コード
public string name { get; set; } // 名前
}
があり、このクラスを経由し、var shohinにデータを取得します。
また、出庫テーブルもDBにあり、これもDBより取得します。
class Delivery
{
public Delivery(string no, string deliverydt, string itemcode)
{
this.no = no;
this.deliverydt = deliverydt;
this.itemcode = itemcode
}
public string no { get; set; } // 出庫番号
public string deliverydt { get; set; } // 出庫日
public decimal itemcode { get; set; } // 商品コード
public decimal deliveryCount { get; set; } // 出庫数}
var dtdelivery
この後、出庫データに出庫日当時の価格を価格マスタから取得しながら、
DataTableに追加します。
DataTable dtdelivery = new DataTable("dtdelivery");
DataRow dr = dtdelivery.NewRow();
foreach (var prop in propsdtdelivery)
{
if (prop.GetMethod.IsVirtual != true)
{
dr[prop.Name] = prop.GetValue(l) ?? DBNull.Value; // 単価項目も追加します。また、出庫数*単価で金額項目も追加します。
}
}
dtdelivery.Rows.Add(dr);
その後、出庫データテーブルの件数をカウントし、金額をサマリーします。
var deliverycontext = dtdelivery.AsEnumerable()
.GroupBy(x => x.Field<string>("ItemCode")).Select(x => new
{
ItemCode = x.Key,
Count = x.Sum(y => y.Field<decimal>("Count")), // 出庫データ件数
SumAmount = x.Sum(y => y.Field<decimal>("SumAmount")) // 出庫金額合計
});
deliverycontextの結果ビューには、値がセットされています。
ここで質問ですが、shohinとdeliverycontextをjoinしたいのですが、
エラーになってしまいます。
var test = from a in shohin
join b in deliverycontext on a.ItemCode equals b.ItemCode into A
from x in A.DefaultIfEmpty()
select new
{
ItemCode = x.ItemCode,
Count = (x != null) ? x.Count : 0,
SumAmount = (x != null) ? y.SumAmount : 0
};
エラー内容:
型 '匿名型' の定数値を作成できません。このコンテキストでサポートされるのはプリミティブ型または列挙型だけです。
何が原因なのか、ご教授の程よろしくお願い致します。