0

LinqToSQL グループから列を選択する際に問題が発生しました。以下は私のクエリです

var qry = (from i in INTERNETDATAs 
join c in COVERS on Convert.ToInt32(i.COVERTYPE) equals c.COV_TYPE
join b in BENEFITS on c.COVERID equals b.COVERID
join p in POLICies on i.REFERENCENO equals p.BACS_POLNO into grp
    where  i.DATELOADED >= new DateTime(2013,1,1)
    && i.DATELOADED < new DateTime(2014,1,1)
    && i.CAMPAIGNTYPE == "1"
    && c.COVERTYPEID == 17063789
orderby i.DOB   
select new
{
    i.ID,
    Campaign = i.CAMPAIGNTYPE,
    Title = i.TITLE,
    Dob = i.DOB,
    Accepted = i.ACCEPTED,
    BankLetter = i.BANKLETTER,
    //p.STATUS,
    //grp.STATUS,
    MonthlyPremium = c.MONTHLYPREMIUM,
    BenefitAmount = b.BENEFITAMOUNT,
    Description = b.BENEFITDESCRIPTION
}
).DefaultIfEmpty();         

 qry.Dump();

このクエリは期待される結果を返しますが、コメントを削除するか、以下のように次のエラーが発生した場合、テーブルSTATUSからの列も必要ですPOLICies//p.STATUS//grp.STATUS

テキスト選択を実行できません:

'System.Collections.Generic.IEnumerable' には 'STATUS' の定義が含まれておらず、タイプ 'System.Collections.Generic.IEnumerable' の最初の引数を受け入れる拡張メソッド 'STATUS' が見つかりませんでした (F4 を押して using を追加します)ディレクティブまたはアセンブリ参照)

できる限りのことを試したので、誰かがこれを手伝ってくれます。

ありがとう

4

1 に答える 1

0

あなたは分野ごとにグループに参加POLICIESしています.SQLBACS_POLNOのように考えてください. group by最後のセレクターでは、実際にはグループ化されたアイテムのコレクションであり、それぞれが異なる値grpを持つ可能性があります。BACS_POLNO

すべての distinct に対して個別のアイテムを生成する場合はBACS_POLNO、通常の結合を実行します。

join p in POLICies on i.REFERENCENO equals p.BACS_POLNO

または、たとえば、BACS_POLNOグループ化されたコレクションから最初のものを選択することもできます。

var qry = (from i in INTERNETDATAs 
join c in COVERS on Convert.ToInt32(i.COVERTYPE) equals c.COV_TYPE
join b in BENEFITS on c.COVERID equals b.COVERID
join p in POLICies on i.REFERENCENO equals p.BACS_POLNO into grp
    where  i.DATELOADED >= new DateTime(2013,1,1)
    && i.DATELOADED < new DateTime(2014,1,1)
    && i.CAMPAIGNTYPE == "1"
    && c.COVERTYPEID == 17063789
orderby i.DOB   
select new
{
    i.ID,
    Campaign = i.CAMPAIGNTYPE,
    Title = i.TITLE,
    Dob = i.DOB,
    Accepted = i.ACCEPTED,
    BankLetter = i.BANKLETTER,
    grp.First().STATUS,
    MonthlyPremium = c.MONTHLYPREMIUM,
    BenefitAmount = b.BENEFITAMOUNT,
    Description = b.BENEFITDESCRIPTION
}
).DefaultIfEmpty();  
于 2013-08-29T15:53:49.893 に答える