比较两个值之间的复杂子查询

时间:2013-08-15 07:19:18

标签: c# linq lambda expression

我有学生资料库,我希望得到一些成绩在0到2之间的学生。

这是我的代码:

_unitOfWork.Repository<Student>().Get(o => o.OrganizationId == organizationId
                && o.Grades.Where( o1 => o1.LastVersion
                        && o1.Type == 5
                        && o1.Value == 1).Count() > 0 
                && o.Grades.Where( o1 => o1.LastVersion
                        && o1.Type == 5
                        && o1.Value == 1).Count() <= 2 );

此代码正常运行,但我的问题是如何使用更少的代码更改此查询。

有没有办法用一些变量替换Count而不在查询中使用它两次?

1 个答案:

答案 0 :(得分:1)

这样的事情?

 var values = Enumerable.Range(1, 2);

 _unitOfWork.Repository<Student>().Get(o => o.OrganizationId == organizationId
            && values.Contains(
                o.Grades.Where( o1 => o1.LastVersion
                    && o1.Type == 5
                    && o1.Value == 1).Count()
               ));