使用实体框架和LINQ未知列错误 [英] Unknown column error using Entity Framework and LINQ

查看:236
本文介绍了使用实体框架和LINQ未知列错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开始与EF昨天和我在急难将这一简单的查询到EF sintax

翻译:

 从报价o选择a.city,解决,offer_address OA
其中,o.identifier = oa.offeridentifier
和a.identifier = oa.addressidentifier
按a.city
为了通过COUNT(*)说明
 

进入:

  VAR城市=(邻在db.offer
              从在db.address
              从OA在db.offer_address
              其中,(o.identifier == oa.offeridentifier
                  &功放;&安培; a.identifier == oa.addressidentifier)
              一组由a.city成C
              选择新
              {
                  量= c.Count(),
                  城市= c.Key
              })OrderByDescending(一个=> a.quantity)。选择(一个=> a.city);

VAR cityCollection =新的名单,其中,串>();
的foreach(在城市VAR市)
    city​​Collection.Add(city.ToString());
 

我已经试过withou成功

  VAR城市=(从OA在db.offer_address
                    从在db.offer.Where(X => x.identifier == oa.identifier)
                    从广告中db.address.Where(Y => y.identifier == oa.offeridentifier).AsEnumerable()
                通过新的{ad.city}组ad.city为G
                选择新
                {
                    量= g.Count(),
                    城市= g.Key
                })OrderByDescending(一个=> a.quantity);
 

发生在尝试获得第一循环中的问题!

 未知列'GroupBy1.K1在字段list'`

第55行:的foreach(在城市VAR市)`
 

对于第二种情况:

无法小组A1

更新

这code的作品,但它不是我需要

  VAR城市=(
                    从db.offer的
                    从广告中db.address
                    从OA在db.offer_address
                    其中,(of.identifier == oa.offeridentifier和放大器;&安培; ad.identifier == oa.addressidentifier)
                通过新的{ad.city}组ad.city为G
                选择新
                {
                    量= g.Count()
                })OrderByDescending(一个=> a.quantity)
 

  VAR城市=(
                    从db.offer的
                    从广告中db.address
                    从OA在db.offer_address
                    其中,(of.identifier == oa.offeridentifier和放大器;&安培; ad.identifier == oa.addressidentifier)
                通过新的{ad.city}组ad.city为G
                选择新
                {
                    城市= g.Key
                });
 

解决方案

更​​新 - 尝试添加​​ AsEnumerable()后的第一个选择

  VAR的查询=(邻在db.offer
            从在db.address
            从OA在db.offer_address
            其中,(o.identifier == oa.offeridentifier和放大器;&安培; a.identifier == oa.addressidentifier)
            一组由a.city成C
            选择新
            {
               量= c.Count(),
               城市= c.Key
            })
            .AsEnumerable()
            .OrderByDescending(一个=> a.quantity)
            。选择(一个=> a.city);
 

I started with EF yesterday and I am in trouble to transform this simple query into EF sintax

Translate:

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

Into:

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());

I have tried withou success

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);

The problem occurs when try to get inside the first loop!

Unknown column 'GroupBy1.K1' in 'field list'`

Line 55: foreach (var city in cities)`

With the second case:

Can't group on 'A1'

UPDATE

This code works, but its not i need

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)

Or

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
                });

解决方案

Update - Try adding AsEnumerable() after the first select

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);

这篇关于使用实体框架和LINQ未知列错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆