Gus*_*elo 3 .net c# entity-framework entity-framework-4
我昨天开始使用EF,我很难将这个简单的查询转换为EF sintax
翻译:
select a.city from offer o, address a, offer_address oa
where o.identifier = oa.offeridentifier
and a.identifier = oa.addressidentifier
group by a.city
order by count(*) desc
Run Code Online (Sandbox Code Playgroud)
成:
var cities = (from o in db.offer
from a in db.address
from oa in db.offer_address
where (o.identifier == oa.offeridentifier
&& a.identifier == oa.addressidentifier)
group a by a.city into c
select new
{
quantity = c.Count(),
city = c.Key
}).OrderByDescending(a => a.quantity).Select(a => a.city);
var cityCollection = new List<string>();
foreach (var city in cities)
cityCollection.Add(city.ToString());
Run Code Online (Sandbox Code Playgroud)
我试过你的成功
var cities = (from oa in db.offer_address
from of in db.offer.Where(x => x.identifier == oa.identifier)
from ad in db.address.Where(y => y.identifier == oa.offeridentifier).AsEnumerable()
group ad.city by new { ad.city } into g
select new
{
quantity = g.Count(),
city = g.Key
}).OrderByDescending(a => a.quantity);
Run Code Online (Sandbox Code Playgroud)
尝试进入第一个循环时会出现问题!
Unknown column 'GroupBy1.K1' in 'field list'`
Line 55: foreach (var city in cities)`
Run Code Online (Sandbox Code Playgroud)
第二种情况:
Can't group on 'A1'
UPDATE
这段代码有效,但它不是我需要的
var cities = (
from of in db.offer
from ad in db.address
from oa in db.offer_address
where (of.identifier == oa.offeridentifier && ad.identifier == oa.addressidentifier)
group ad.city by new { ad.city } into g
select new
{
quantity = g.Count()
}).OrderByDescending(a => a.quantity)
Run Code Online (Sandbox Code Playgroud)
要么
var cities = (
from of in db.offer
from ad in db.address
from oa in db.offer_address
where (of.identifier == oa.offeridentifier && ad.identifier == oa.addressidentifier)
group ad.city by new { ad.city } into g
select new
{
city = g.Key
});
Run Code Online (Sandbox Code Playgroud)
更新 - 尝试AsEnumerable()在第一次选择后添加
var query = (from o in db.offer
from a in db.address
from oa in db.offer_address
where (o.identifier == oa.offeridentifier && a.identifier == oa.addressidentifier)
group a by a.city into c
select new
{
quantity = c.Count(),
city = c.Key
})
.AsEnumerable()
.OrderByDescending(a => a.quantity)
.Select(a => a.city);
Run Code Online (Sandbox Code Playgroud)