2010-02-01 2 views
3

데이터베이스에서 linq를 사용하여 데이터를 검색하려고합니다. 익명 형식을 사용하여 Ilist, Array, ArrayList 또는 Collection으로 변환하고 싶습니다. 이 데이터는 Ilist, arraylist 또는 컬렉션을 허용하는 제 3 자 개체에서 사용됩니다.익명 유형을 배열 또는 arraylist로 변환하십시오. 할 수 있습니까

나는 이것이 작동하는 것처럼 보일 수 없다. 나는, 그것은 배열 목록, 또는 익명 형식으로 결과를 변환 함께 할 아무것도

using (var db = new dbDataContext()) 
{ 
    var query = from e in db.people 
       select new 
       { 
        Count = e.LastName.Count() 
       }; 

    Array test; 
    test = query.ToArray(); 
} 
+0

이상하게, 나를 위해 작동합니다 : int [] iss = {324, 4, 3, 2, 1}; var query = 보낸 사람 새 항목을 선택하십시오. { Count = e }; 어레이 테스트; test = query.ToArray(); – jestro

답변

8

"유형 '선택 System.String'지원되지 시퀀스 연산자를"다음 오류가 발생합니다. 여기에 실패 코드의 또 다른 버전입니다 : 여전히 같은 방법으로 실패합니다

using (var db = new dbDataContext()) 
{ 
    var query = db.people.Select(x => x.LastName.Count()); 
    foreach (int x in query) 
    { 
     Console.WriteLine(x); 
    } 
} 

- 그것은이 비트의 번역이기 때문에 : 문제를 일으키는 SQL에

x => x.LastName.Count() 

가.

로 변경을 :

x => x.LastName.Length 

그리고 당신이 작동 찾을 수 있습니다 생각한다. 이것은 실제로 C# 문제는 아니며 LINQ to SQL의 번역 기능 일뿐입니다.

나는 을 입력하지 마십시오. 여기에서는 익명 형식을 사용합니다. - 무의미합니다. 어쩌면 이것은 완전한 코드는 아니지만 일반적으로 단일 멤버가있는 익명 형식을 만드는 경우 자신이 정말로 좋은 일을하는지 물어보십시오.

+0

왜 무의미한가요? LINQ에서 SELECT COUNT (*) FROM 테이블을 얻는 가장 좋은 방법은 무엇입니까? –

+0

@Dight T :'db.people.Count()'를 사용합니다. 필터링 등이 필요한 경우에도 익명 형식은 필요하지 않습니다. –

2

ArrayList 클래스에는 ICollection을 허용하는 생성자가 있습니다.
LINQ 결과의 목록 버전을 피드에 제공 할 수 있어야합니다.

using (var db = new dbDataContext()) { 
     var query = from e in db.people 
        select new { Count = e.LastName.Count() }; 

     ArrayList list = new ArrayList(query.ToList()); 
} 

저는 여기에 Visual Studio가 없습니다 (필자는 Mac입니다). 그러나 도움이 될 수 있습니다. (ToArray도 충분합니다.)

길이()로 바꿔야 할 수도 있습니다.

관련 문제