2014-09-14 3 views
1

다음 링크에서 로컬 데이터베이스로 작업하고 있습니다. http://www.c-sharpcorner.com/UploadFile/ae35ca/working-with-creating-a-local-database-in-wp7/wp8에서 쿼리를 만족하는 레코드를 가져 오는 방법

모든 것이 잘 작동,하지만 난 나이 = 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()); 
} 

위의 코드가 모든 레코드를 가져올 항목을 가져 캔트.

var EmpQuery = from Emp in Empdb.Employees where emp.EmployeeAge == 15 select Emp; 

답변

1

LINQ는 게으른 :하지만 난 단지 15 세

2

그것은 당신의 LINQ 문에 where 절을 추가하는 간단한 경우, 그래서 뭔가 같이해야와 아이템을 취득하기 위해 하나의 질의를 필요로한다. 필요한 경우 실제 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()); 
} 
관련 문제