如何在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岁的物品。

如何在wp8中获取满足查询的记录

这应该只是在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());
}