2009-10-12 2 views
4

소수의 행을 가진 AspTable 있습니다. 나는 하나를 찾아 그것을 제거하는 컬렉션에 linq Where()를 실행하고 싶다.TableRowCollection에서 linq 사용

mytable.Rows는 TableRowCollection 유형입니다. mytable.Rows.AsQueryable()은 Linq.Queryable을 반환하지만 Intellisense는 내 Linq 연산자를 제공하지 않습니다.

답변

8

당신은 사용할 수 있어야합니다 :

myTable.Rows.Cast<TableRow>() 

문제는 TableRowCollectionIEnumerable를 구현하는 것입니다,하지만 IEnumerable<T> - 그것은 객체에 LINQ가 주로 작동하는 후자입니다. 위의 내용은 기본적으로 각 항목을 차례대로 캐스팅하는 입니다.

+0

더 많은 정보를 제공해 주셨으면 좋겠습니다. LINQ를 처음 사용하고 동일한 보트에 고정되었지만 myTable.Rows.Cast에서 LINQ 조건부 개수를 수행 할 수 없습니다. () .Count (n => n.ID.CompareTo ("myRowId") == 0); –

+0

"할 수 없다"는 것은 무엇을 의미합니까? 새로운 질문을해야하는 것 같습니다. (왜 단지'Count (n => n.ID == "myRowId")')가 아닌'CompareTo'를 사용하는지 명확하지 않다. –

+0

오류없이 디버깅을하기 때문에 이전에 무슨 일이 일어 났는지 확신 할 수 없다. int rowcount = myTable.Rows.Cast () .Count (n => n.ID == "myRowId"); 완벽하게 잘 작동합니다. CompareTo에 관해서는, 나는 방금 문자열 비교를 위해 ==를 사용하지 않도록 배웠다. 언어 간 전환으로 인해이 경우에는 더 좋았지 만 ==가 잘 작동합니다. –