如何在wp8中获取满足查询的记录
本文关键字:满足 查询 记录 获取 wp8 | 更新日期: 2023-09-27 18:21:44
我正在使用以下链接中的本地数据库。http://www.c-sharpcorner.com/UploadFile/ae35ca/working-with-creating-a-local-database-in-wp7/
一切都很好,但我拿不到年龄=15 的东西
public IList<Employee> GetEmployeeList()
{
IList<Employee> EmployeeList = null;
using (EmployeeDataContext Empdb = new EmployeeDataContext(strConnectionString)
{
IQueryable<Employee> EmpQuery = from Emp in Empdb.Employees select Emp;
EmployeeList = EmpQuery.ToList();
}
return EmployeeList;
}
private void button4_Click(object sender, RoutedEventArgs e)
{
IList<Employee> EmployeesList = this.GetEmployeeList();
StringBuilder strBuilder = new StringBuilder();
strBuilder.AppendLine("Employee Details");
foreach (Employee emp in EmployeesList)
{
strBuilder.AppendLine("Name - " + emp.EmployeeName + " Age - " + emp.EmployeeAge);
}
MessageBox.Show(strBuilder.ToString());
}
上面的代码获取所有记录。但我需要一个查询来获取只有15岁的物品。
这应该只是在LINQ语句中添加where
子句的一个简单例子,所以类似于:
var EmpQuery = from Emp in Empdb.Employees where emp.EmployeeAge == 15 select Emp;
LINQ是懒惰的。它只会在必要时执行实际的DB提取。
当您在IQueryable
上调用.ToList
时,您强制DB枚举结果,从而从数据库中获取所有数据。
如果你想让数据库过滤结果而不是客户端-从GetEmployeeList
方法返回一个IQueryable
,并在按钮上过滤,点击:
public IQueryable<Employee> GetEmployeeList()
{
// the database should be available on the class here, don't dispose it
// or this won't work since it'll be disposed before you make a query
return (from Emp in Empdb.Employees select Emp);
}
private void button4_Click(object sender, RoutedEventArgs e)
{
var EmployeesList = this.GetEmployeeList();
StringBuilder strBuilder = new StringBuilder();
strBuilder.AppendLine("Employee Details");
// now we can filter it
foreach (Employee emp in EmployeesList.Where(e => e.EmployeeAge == 15))
{
strBuilder.AppendLine("Name - " + emp.EmployeeName + " Age - " + emp.EmployeeAge);
}
// this could also be nicer with string.Join
MessageBox.Show(strBuilder.ToString());
}