我需要Linq来使用join和count进行sql查询

时间:2015-05-12 09:01:55

标签: c# entity-framework

我需要计算tbluserregistration表中一个匹配器的单打数量。 我使用下面的代码,在此代码中,如果用于过滤网格记录的编码。 请快速重播我。

private IQueryable chanims
{
    get
    {

        EntitiesModelMX dbContext = new EntitiesModelMX();


        //var query = from p in dbContext.TblShadChanims
        //            where p.Confirmed == true || p.Status != null
        //            orderby p.ShadChanimID descending
        //            select p;
        var query = from p in dbContext.TblShadChanims
                    join u in dbContext.TblUserRegistrations
                    on p.ShadChanimID equals u.ShadChanID into usercount
                    orderby p.ShadChanimID descending
                    select new
                    {
                        p,
                        Singles = usercount.Where(usr => usr.ShadChanID !=0).Count()
                    };

        if (txtFirstNameFilter.Text.Trim().Length > 0)
        {
            query =                  (IOrderedQueryable<MainDataMX.TblShadChanim>)query.Where(p => p.p.FirstName.Contains(txtFirstNameFilter.Text.Trim()));
        }


        if (txtLastNameFilter.Text.Trim().Length > 0)
        {
            query = (IOrderedQueryable<MainDataMX.TblShadChanim>)query.Where(p => p.LastName.Contains(txtLastNameFilter.Text.Trim()));
        }

        if (txtPhoneFilter.Text.Trim().Length > 0)
        {
            query = (IOrderedQueryable<MainDataMX.TblShadChanim>)query.Where(p => p.Phone1.Contains(txtPhoneFilter.Text.Trim()));
        }

        if (!ddlStatus.SelectedValue.Equals("ALL"))
        {
            query = (IOrderedQueryable<MainDataMX.TblShadChanim>)query.Where(p => p.Status == (int?)int.Parse(ddlStatus.SelectedValue));
        }

        if (txtEmailFilter.Text.Trim().Length > 0)
        {
            query = (IOrderedQueryable<MainDataMX.TblShadChanim>)query.Where(p => p.Email.Contains(txtEmailFilter.Text.Trim()));
        }


        if (!drpGender.SelectedValue.Equals("ALL"))
        {
            query = (IOrderedQueryable<MainDataMX.TblShadChanim>)query.Where(p => p.IsMale == (bool?)bool.Parse(drpGender.SelectedValue));
        }

        return query;
    }
}

上面的代码无效。请回复。

1 个答案:

答案 0 :(得分:0)

只需使用Count with Grouping,请查看以下链接:

Group and count items linq with groupby and count

希望被使用 :)