2013-09-03 3 views
0

내 프로젝트에 대해 linq을 사용하고 있습니다. 하지만이 .ToList() 확장자를 사용 ExecuteQuery()의 결과를 변환하고 후 오류가 :ExecuteQuery() 출력 결과를 목록으로 변환 한 후 오류가 발생합니다.

var logentries = DB.ExecuteQuery<keyValueList>(string.Format(query)); 
keyValueList kv1 = logentries.ToList();// -->Error in this line as: 

오류 :

Cannot implicitly convert type 'System.Collections.Generic.List' to 'DataLib.keyValueList'

+2

유형 keyValueList는 목록 <..>이 아니며 반환 된 목록의 단일 항목입니다. – Matten

+0

또한 var kv1 = logentries.ToList();를 사용했습니다. 그러면 일들이 분명해질 것입니다. –

답변

0

ToListTkeyValueListList<T>을 반환합니다. First/Single이 exeption를 던져 반면 입력 sequnce이 비어있는 경우

diference은
keyValueList kv1 = logentries.FirstOrDefault(); 

...OrDefault 방법 null를 반환 :하지만 난 First/FirstOrdefault 또는 Singler/SingleOrDefault 당신이 하나의 개체가 다음 하나를 사용하고 싶은 생각합니다. 또한 Single은 하나 이상의 항목이있는 경우 예외를 throw합니다 (불가능한 경우 던져야합니다. 예를 들어 고유 속성으로 필터링하므로 유용합니다).

+0

그리고 First() 또는 FirstOrDefault()를 사용하기 전에 List.Count()> 0인지 확인하는 것이 좋습니다. FirstOrDefault()로 여러 번 구워졌습니다. – WEFX

+2

@WEFX :'Count()'가 있는지 알아 보려면'Count()'를 사용하지 말고'Any'를 사용하십시오. 그렇지 않으면 전체 쿼리를 실행하고 각 항목을 계산하여 하나 이상의 항목이 있는지 확인합니다. 'FirstOrDefault'를 사용한다면'Any'를 사용할 필요가 없습니다. 'if (kv1! = null) .... '만 체크하면됩니다. –

+0

실제로 선택 쿼리에서 목록을 반환하고 싶습니다. 내가 Datacontext를 사용할 때 ExecuteQuery()가 리턴 할 것을 알고 싶을 뿐이다. foreach에서 logentries를 사용하여 원하는 목록을 얻은 다음 반환 할 것이라고 생각했습니다. –