정확히 동일합니다.
당신은 자신이 있으며, toString()
string query1String, query2String;
using (var context = new TRANSITEntities())
{
var result = context.Table1.Where(c => c.UserCode == "123");
query1String = result.Expression.ToString();
}
using (var context = new TRANSITEntities())
{
var result = from c in context.Table1
where c.UserCode == "123"
select c;
var query2String = result.Expression.ToString();
}
Assert.AreEqual(query1String, query2String);
또한 result
실제로 결과되는 것은 아니다 보면이를 확인할 수 있습니다. 실행되지 않았거나 열거 된 IQueryable
입니다. 이것은 아직 실행되지 않은 SQL 문과 같습니다 (일종의). 당신이해야한다면
var t1 = result.ToArray()
var t2 = result.ToArray()
그러면 쿼리는 실제로 두 번 실행됩니다. t1
및 t2
은 실제 결과입니다 (메모리 배열에 있음) ... not . 즉, result
의 이름은 실제로 query
이어야합니다. 위의 예제는 작동하지 않습니다. using
블록 외부의 결과에 ToArray
을 호출하면 실행이 불가능하기 때문에 ... 실패합니다. 컨텍스트가 삭제 된 쿼리 :
using (var context = new TRANSITEntities())
{
var result = context.Table1.Where(c => c.UserCode == "123");
}
// throws exception:
var array = result.ToArray();
네, 저의 실수입니다. 나는 그것을 읽을 수있게하려고 노력했다. 실패. – Mathieu
수정되었습니다. 성공! –