1
Dim itemList  

    itemList = From items In Context.Product 
       Select New With {Key .Code = items.ITEM_CODE_, Key .Name = items.ITEM_NAME, Key .Eancode = items.EANCODE}  

    Dim sortList = itemList.Where(Function(u) u.Name.Contains("soap")) 

、私はエラーを取得しています:Entity Frameworkで選択したエンティティデータ型を宣言するにはどうすればよいですか?私は最後の行を実行すると

"Method invocation failed because 'Public Function Where(predicate As String, ParamArray parameters As System.Data.Objects.ObjectParameter()) As System.Data.Objects.ObjectQuery`1[[VB$AnonymousType_2(Of VB$AnonymousType_2(Of Integer,String,String))' cannot be called with these arguments:" & vbCrLf & " Argument matching parameter 'predicate' cannot convert from 'VB$AnonymousDelegate_0(Of Object,Object)' to 'String'."

は、実際に私は別の方法にitemListエンティティを通過したいですし、その方法では、私は動的にオプションを並べ替え/フィルタを使用します。

Dim itemList 

    itemList = From items In Context.Product 
       Select New With {Key .Code = items.ITEM_CODE_, Key .Name = items.ITEM_NAME, Key .Eancode = items.EANCODE}   
    Call LoadData(itemList) 

Sub LoadData(itemList as Object) 
    Dim sortList = itemList.Where(Function(u) u.Name.Contains("soap")) 
End Sub 

以下のように

は、それが解決することができる方法を私にあなたの提案を共有して下さい!

答えて

2

プロパティCode,NameおよびEancodeの新しいクラスを作成するだけです。

Public Class ProductRow 
    Public Property Name As String 
    Public Property Code As String 
    Public Property Eancode As String  
End Class 

、代わりの匿名型を使用して、このタイプを使用します。

Dim itemList 
itemList = From items In Context.Product 
      Select New ProductRow With {Key .Code = items.ITEM_CODE_, Key .Name = items.ITEM_NAME, Key .Eancode = items.EANCODE}   
Call LoadData(itemList) 

その後、あなたは別の関数に渡すことができます:

Sub LoadData(itemList as IQueryable(Of ProductRow)) 
    Dim sortList = itemList.Where(Function(u) u.Name.Contains("soap")) 
End Sub 

編集: の場合実行時にのみ列名を知っているので、dynamic LINQ libraryのようなものが必要です。この場合、IQueryable(Of Product)

Sub LoadData(itemList as IQueryable(Of Product)) 
    Dim sortList = itemList.Where("ColumnXY LIKE '%soap%'"); 
End Sub 
+0

@Marcありがとうございます。しかし、私は以下のように動的な列でフィルタリングしたい[Dim() (10))]これはダイナミックフィルタで可能ですか? –

+0

"動的フィルタ"とはどういう意味ですか?例がありますか? – Marc

+0

Dim sortList = itemList.Whereのように名前でフィルタリングするとします(Function(u)u.Name.Contains() "石鹸"))。後で、コードでデータをフィルタリングしたいので、Nameの代わりに上記の式でCodeを置き換えるにはどうしたらいいですか? –

関連する問題