2

次のSQLクエリがあります...

    select  seaMake AS Make,
        seaModel AS Model,
        COUNT(*) AS [Count],
        MIN(seaPrice) AS [From],
        MIN(seaCapId) AS [CapId]
from tblSearch 
where seaPrice >= 2000
and seaPrice <= 7000
group by seaMake, seaModel
order by seaMake, seaModel

これを LINQ to Entities クエリとして記述しようとしていますが、問題があります。これは私がこれまでに持っているものですが、var S から make と model の値にアクセスできません

var tester = from s in db.tblSearches
             where s.seaPrice >= 2000
             && s.seaPrice <= 7000
             orderby s.seaMake
             group s by s.seaMake into g
             select new
             {
                 make = g.seaMake,
                 model = s.seaModel,
                 count = g.Max(x => x.seaMake),
                 PriceFrom = g.Min(s.seaPrice)
              };

どこが間違っていますか?

4

2 に答える 2

2

これは、SQL の簡単な翻訳である必要があります。

from s in db.tblSearches
where
    s.seaPrice >= 2000 &&
    s.seaPrice <= 7000
group s by new {s.seaMake, s.seaModel} into g
orderby g.Key
select new
{
    Make =  g.Key.seaMake,
    Model = g.Key.seaModel,
    Count = g.Count(),
    From =  g.Min(x => x.seaPrice),
    CapId = g.Min(x => x.seaCapId)
}
于 2012-10-17T19:40:49.167 に答える
1

g にグループ化しIEnumerable<TypeOfS>たときの元のコレクションの代わりに、そのコレクションを IEnumerable> に変換したため、現在のスコープのコレクションは. したがって、以下は有効ですg

from s in db.tblSearches
where s.seaPrice >= 2000
   && s.seaPrice <= 7000
orderby s.seaMake
group s by s.seaMake into g // the collection is now IEnumerable<IGrouping<TypeOfSeaMake, TypeofS>>
select new {
    make = g.Key, // this was populated by s.seaMake
    model = g.First().seaModel, // get the first item in the collection
    count = g.Max(x => x.seaMake), // get the max value from the collection
    PriceFrom = g.Min(x => x.seaPrice), // get the min price from the collection
};

グループ化ごとに 1 つのアイテムが返されるようになりました

于 2012-10-17T19:47:24.560 に答える