내가 LINQ 쿼리 등이에 사용하기 위해 IEnumerable을
foreach
성명서에 기재되어 있습니까?
나중에
답변
IEnumerable<Data>
쿼리 유형은 using
블록 외부에서 선언 할 수 있습니다. 그러나 코멘트에서 myObject
이 처리 된 후에는 열거 할 수 없다는 것이 분명합니다. using
블록을 떠나기 전에 모든 요소를 목록으로 가져 오지 않으려면 using
블록 내에서 열거를 수행하면됩니다. 데이터베이스에서 데이터를 가져 오려면 해당 데이터베이스에 대한 연결이 열려 있어야합니다.
using(myObject.......)
{
var query = csv.Select(x => new Data() { ID = x[27], Raw = String.Join(",", x) });
//Do some stuff
//Now I want to use the result of the query
foreach (var item in query)
...
}
질문하기 전에 orginally 시도했지만 변수에 아무것도 없었습니다 – Jon
나는 쿼리를 실행하기 위해 .ToList()를 수행해야한다고 생각합니다. –
@ 존 : 변수에 아무 것도 없다고 할 때, 그것이 null이라는 것을 의미합니까, 아니면 단지 빈 IEnumerable입니까? – StriplingWarrior
변수를 using 블록 외부에 선언하십시오.
ToList()
또는 ToArray()
을 호출하여 쿼리를 실행하십시오. 그것은 using
절에서 돌아온 후 쿼리를 실행할 수 있다면
List<Data> data=null;
using(myObject.......)
{
data=csv.Select(x => new Data() { ID = x[27], Raw = String.Join(",", x) }).ToList();
}
당신이 할 수 있습니다 : 그런 경우
IEnumerable<Data> data=null;
using(myObject.......)
{
data=csv.Select(x => new Data() { ID = x[27], Raw = String.Join(",", x) });
}
을하지만, 왜 당신은 첫번째 장소에있는 using
절에를 가하고 있습니다 ?
- 사용
ToList()
즉시 쿼리를 실행하고 메모리에 모두로드 : 쿼리가 배치되지myObject
에 의존하는 경우당신은 두 가지 선택이있다.
myObject
나중에 처리하십시오.
ToList()를 호출해도 foreach와 동일한 성능이 저하됩니까? 내가 묻는 이유는 IEnumerable
목록에 모든 항목이 메모리에로드됩니다. – CodesInChaos
하지만 foreach 실 거예요? 나는 그 많은 것을 기억할 수 없다! – Jon
IEnumerable
을 잘 활용해야합니다. 이 기능의 장점은 필요할 때까지 쿼리가 평가되지 않는다는 것입니다. ToList()
을 실행하면 쿼리가 완전히 실행됩니다. 가능한 한 많이 IEnumerable
을 사용하는 것이 좋습니다.
당신은 내가 myObject에 배치되면 쿼리가 더 이상 작동하지 않는 가정이
IEnumerable<Data> myDataList;
using(myObject.......)
{
myDataList =csv.Select(x => new Data() { ID = x[27], Raw = String.Join(",", x) });
}
// do your stuffs
// and just use the IEnumerable<Data> in your foreach loop
foreach(var item in myDataList)
{
// here item is typeof(Data)
}
- 1. 나중에
- 2. loaderlock MDA는 - 훨씬 나중에 나중에 여기
- 3. 나중에 제약
- 4. 나중에 예외를 변수에 저장하여 나중에 처리 할 수 있습니까?
- 5. iPad를 나중에 지원할 계획 인 iPhone 응용 프로그램 만들기 나중에
- 6. 설정 도구 설명은 나중에
- 7. 나중에 wxTE_PASSWORD를 설정하십시오.
- 8. PHP 나중에 PHP 페이지
- 9. xmonad 그리고 나중에 읽어보세요
- 10. 나중에 사용할 개체 저장
- 11. 나중에 select 문을 저장하십시오.
- 12. 나중에 실행할 함수 저장
- 13. href하지만 나중에 URL이 없습니까?
- 14. 나중에 요소 클래스를 기억합니다.
- 15. 나중에 지우기위한 setInterval 저장
- 16. 나중에 사용할 테이블을 선택하십시오
- 17. 좋은 방법은 나중에
- 18. 나중에 ASP.NET 번역 허용
- 19. 안드로이드는 나중에 사용자에게 알립니다
- 20. Gtkmm : 나중에 윈도우 추가하기
- 21. 나중에 OpenGL 사양 - 쉐이더 이상?
- 22. 나중에 만료 날짜가있는 행을 선택하십시오.
- 23. 나중에 볼 URL을 저장하는 방법
- 24. 나중에 div 형식으로 처리기를 추가하십시오.
- 25. "나중에 수정"하는 습관을 극복하기
- 26. 나중에 ASP.NET에서 사용할 문자열을 저장하십시오.
- 27. 나중에 WFS를받는 방법은 무엇입니까? GeoExt
- 28. div의 바인딩을 해제하고 나중에 바인딩하십시오.
- 29. 자바 지금 선언, 나중에 정의
- 30. 속성을 나중에 사용하는 종속성 속성?
같은 외부 범위에
IEnumerable<Data>
를 정의 할 수 있습니다. 그게 맞습니까? – CodesInChaos그게 문제 인 것 같습니다. 오 얼굴 손바닥! DOH! DOH! DOH! – Jon