使用linq到对象(不是linq到sql)进行条件查询的最佳方法是什么.
目前我正在使用http://www.albahari.com/nutshell/predicatebuilder.aspx中的Predicate构建器 ,并将已编译的谓词传递给IEnumerable.Where,它似乎工作得很好.
我要解决的示例代码:
我有这个
string keyword1 = "Test1";
string keyword2 = "Test3";
IEnumerable<TestObject> tests = new List<TestObject>()
{
new TestObject() {Name1 = "Test1", Name2 = "Test1"},
new TestObject() {Name1 = "Test2", Name2 = "Test2"},
new TestObject() {Name1 = "Test3", Name2 = "Test3"},
};
if (!String.IsNullOrEmpty(keyword1) && String.IsNullOrEmpty(keyword2))
tests = tests.Where(e => e.Name1.Contains(keyword1));
else if (!String.IsNullOrEmpty(keyword2) && !String.IsNullOrEmpty(keyword1))
tests = tests.Where(e => e.Name2.Contains(keyword2) || e.Name1.Contains(keyword1));
return tests.ToList();
Run Code Online (Sandbox Code Playgroud) 我正在开发一个ASP.NET MVC(旧版本)应用程序,我有一个表单,根据主要代码和学生姓氏的字母顺序为学生分配顾问.
我正在尝试实现以下代码,但它向&操作员显示红色涂鸦:
错误:运算符'&'不能应用于'
System.Linq.IQueryable<Appointments.Models.MajorAdviserStudentAssignmentByAlpha>'和'lambda表达式'和'lambda表达式' 类型的操作数
var majorAssignmentByAlpha = FindAllMajorAdviserStudentAssignmentByAlphas()
.Where(
a => a.MajorString == student.StudentMajor) &
(a => ((String.Compare(student.StudentLastName, a.AlphaStart) >= 0) &
(String.Compare(student.StudentLastName, a.AlphaEnd) <= 0))
.FirstOrDefault());
if (majorAssignmentByAlpha != null)
return majorAssignmentByAlpha.Adviser;
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助,以了解这里有什么问题.提前致谢!
我想创建计数器方法,它计算每个位置停止的作业数.我尝试了它,如下所示,但我收到以下错误:
错误1运算符'&&'无法应用于'bool'和'JobTracker.Models.Job'类型的操作数D:\ C#Web Application\JobTracker-Dev2 FINAL\JobTracker\Controllers\JobController.cs 126 46 JobTracker
我知道这事做与boolean和Int比较,但我不知道我怎么能在这是在当前状态下解决问题
public int Stopped()
{
int Stopped = db.Jobs.Where(x => x.Status == "Stopped" && x => x.LocationID == 1).Count();
return Stopped;
}
Run Code Online (Sandbox Code Playgroud)
还有一种简单的方法可以将计数保存在一个方法中.我有大约20个这些单独的方法,我很乐意将它们全部放在一个方法中,然后我可以初始化该方法并在需要时调用每个变量
public void Stopped()
{
int HBAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 1).Count();
int CRStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 2).Count();
int MAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 3).Count();
int QCStop = db.Jobs.Where(x => …Run Code Online (Sandbox Code Playgroud)