2010-01-19 9 views
0

나는이 코드를 작성하여 컬렉션을 생성했습니다. subsonic.where를 사용하여 컬렉션을 필터링하려고 시도했지만 작동하지 않습니다. 사실 where 절은 사용자 입력에 따라 변경되므로 where 절을 sqlquery에 추가 할 수 없으며 데이터 테이블은 사용자 입력을 기반으로하는 컬렉션의 다른 데이터로 채워집니다. 어떻게 이것을 달성 할 수 있습니까? 또한 나는 컬렉션을 변경하지 않고 다른 where 절로 필터링하기 위해 더 많이 사용하기를 원합니다. Alo 나는 두 개의 열만 선택했지만 모든 열이 표시됩니다. 도와주세요.아음속 컬렉션

Dim sq As SB.SqlQuery = New SB.Select("product.prodcode as 'Product Code'").From(DB.Product.Schema) 
Dim wh As SB.Where = New SB.Where() 
Dim prod As DB.ProductCollection = sq.ExecuteAsCollection(Of DB.ProductCollection)() 

wh.ColumnName = DB.Product.ServiceColumn.PropertyName 
wh.Comparison = SubSonic.Comparison.NotEquals 
wh.ParameterValue = System.Decimal.One 

Dim tab As DataTable = prod.Where(wh).Filter().ToDataTable() 
Me.GridControl1.DataSource = tab 

답변

1

당신이하고있는 일은 쿼리를 수행해야하는 곳이 어디인지, 그리고 DB를 누르는 것만으로는 효과가 없습니다. 사실을 필터링하려면 Linq의 Where()를 사용할 수 있습니다.이 필터는 목록을 필터링합니다.

+0

하지만 linq을 사용하지 않습니다. 나는 .net 2.0을 사용하고있다. 아음속으로 컬렉션 또는 데이터 집합을 필터링하는 방법 –

+0

Where()를 사용하여 DB에서 필터링하도록합니다. 그것이 당신을 위해 그것을하지 않으면, 손으로 당신의 컬렉션을 필터링하십시오. 그것이 당신을 위해 작동하지 않는다면 다른 플랫폼이 필요합니다. –

+0

SubSonic의 Where() 사용에 대한 예제를 확인하십시오. http://subsonicproject.com/docs/Simple_Query_Tool – sparks