質問

小さなクエリを作成しましたが、Linqpad ではうまく機能しましたが、(以下を参照) Tariffs が Iqueryable として返されません。これを修正する方法を知っている人はいますか?

基本的には「関税 = 新しい ....」を参照してください。

from v in House
join gvt in
    (from t in MyTariffs where t.Id == 3 select t)
on v.IdTariff equals gvt.Id
select new
{
   Id = v.Id,
   Tariffs = new
   { 
     Deposit = gvt.CurrentDeposit
   }
}

これを試しましたが、gvtがテーブルか何かではないため無効ですか?

from v in House
join gvt in
    (from t in MyTariffs where t.Id == 3 select t)
on v.IdTariff equals gvt.Id
select new
{
   Id = v.Id,
   Tariffs = from x in gvt   // NOTICE i am doing from x in gvt... But it fails..
   select new
   { 
     Deposit = gvt.CurrentDeposit
   }
}

もちろん、gvt には内部結合があるため、必要な値だけが含まれています...

MyTariffsから直接プルすることもできますが(これは機能し、Iqueryableを返します)、gvtで行った結合を考慮していないため、情報が多すぎますか?

from v in House
join gvt in
    (from t in MyTariffs where t.Id == 3 select t)
on v.IdTariff equals gvt.Id
select new
{
   Id = v.Id,
   Tariffs = from x in MyTariffs // THIS has nothing to do with my join
   select new
   { 
     Deposit = gvt.CurrentDeposit
   }
}
役に立ちましたか?

解決

サブクエリ内のデータを選択してください -- Id == 3 でよろしいですか? そして Id == v.IdTariff?本当にそうである場合は、外側のクエリに where 句を追加して、v.IdTariff == 3 の場合に v のみを選択することができます。ただし、あなたはそれらすべてを望んでいると思います。

var q = from v in House
        select new {
            Id = v.Id,
            Tariffs = (from g in MyTariffs
                       where g.Id == v.IdTariff
                       select g.CurrentDeposit)
        };

コメントに応えて、グループ化されたサンプル (未コンパイル/未テスト)。

var q = from v in House
        join g in (from t in MyTariffs where t.Id == 3 select t)
        group by v.Id into gvt
        select new {
            Id = gvt.Key,
            Tariffs = gvt.g
        };
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top