【发布时间】:2011-07-28 18:29:04
【问题描述】:
我昨天开始使用 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
进入:
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());
我试过了,没有成功
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);
尝试进入第一个循环时出现问题!
Unknown column 'GroupBy1.K1' in 'field list'`
Line 55: foreach (var city in cities)`
第二种情况:
Can't group on 'A1'
更新
此代码有效,但我不需要
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)
或者
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
});
【问题讨论】:
-
类似
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 orderby c.Key select c.Key但我真的不知道如何用 group by 计数(*) -
这是您尝试使用模型和数据库的第一个第一个查询吗?这不是一个真正的“简单查询”。非常非常简单的查询呢?例如:
(from a in db.address select a.city).ToList()。这行得通吗?由于异常中提到了 column 这个词,我猜想您的模型属性与您正在使用的现有数据库中的列之间可能存在不匹配。 EF 生成一条 SQL 语句,DB 说“无法执行,因为我的表中不存在该列”之类的...... -
@Saluma,这个工作很好
(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 c.key,当我添加不是列的 quantity 时会出现这个问题,它只是一个 count(*) 我得到了这个异常! -
此代码有效
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 orderby c.Key descending select c.Key -
Gustavo,我刚刚在您的示例中创建了三个类,并准确执行了您问题中的查询。它毫无例外地工作。您必须显示更多详细信息:三个类以及三个对应表的 DB 模式。魔鬼会在一些细节。一般来说,像您这样的查询很好并且有效。
标签: c# .net entity-framework entity-framework-4