0

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

基本的にTariffs = new ....を参照してください。

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
   }
}
4

1 に答える 1

2

サブクエリでデータを選択します -- 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
        };
于 2009-11-01T12:49:15.667 に答える