使用IN对Linq进行Sql查询

时间:2013-09-24 05:40:11

标签: c# asp.net sql linq linq-to-sql

我有Sql Query喜欢:

select distinct FROM_EMAILID,FROM_COUNTRY from SURVEY_VISITORS
where FROM_COUNTRY IN 
(
  select top 1 FROM_COUNTRY as FROM_COUNTRY from SURVEY_VISITORS 
  where FROM_COUNTRY<>'undefined' 
  group by FROM_COUNTRY order by COUNT(*) desc
) 

我无法处理IN运营商 任何帮助将不胜感激。

对于子查询,我尝试过这种方式:

var innerQuery = (from t in VDC.SURVEY_VISITORS
                           group t by new
                           {
                              t.FROM_COUNTRY
                           } into g
                           orderby
                            g.Count() descending
                           select new
                           {
                             VisitorCount = (Int64?)g.Count(),
                             Country = g.Key.FROM_COUNTRY
                           }).FirstOrDefault();

1 个答案:

答案 0 :(得分:0)

var innerQuery = (from t in VDC.SURVEY_VISITORS
                  group t by new
                  {
                    t.FROM_COUNTRY
                  } into g
                  orderby
                  g.Count() descending
                  select new
                  {
                    VisitorCount = (Int64?)g.Count(),
                    Country = g.Key.FROM_COUNTRY
                  }).FirstOrDefault();

var result = (from xx in VDC.SURVEY_VISITORS
                                  where ((innerQuery.Country.Contains(xx.FROM_COUNTRY)) && xx.TEMPLATE_ID == RecentBlastedTemplate.TEMPLATE_ID)                                  
                                  select new
                                      {
                                          xx.FROM_COUNTRY,
                                          xx.FROM_EMAILID
                                      }).Distinct().ToList();