1

実行時にLINQtoEntitiesクエリのDbSetを指定することは可能ですか?

たとえば、「IsExpired」などの共通のプロパティを持つさまざまなDbSetがある場合、DbSetをクエリに渡すことができますか?

それで、

Dim query = From o In db.Products Where o.IsExpired = True

次のようになります、

Dim myDynamicName As String
myDynamicName = "Products"

Dim query = From o In db("myDynamicName") Where o.IsExpired = True
4

1 に答える 1

1

流暢な構文を使用すると、これが不可能な理由がより明確になります。

Dim query = db("myDynamicName").Where(Function(o) o.IsExpired)

機能は

Function Func(Of In T, Out bool)

のタイプはT、その前にあるから推測されIQueryable Of Tます。(これはWhere拡張メソッドであるため可能であり、IQueryableが最初の入力パラメーターです)。したがって、コンパイラはそれo.IsExpiredが有効な式であることを認識しています。

つまりdb("myDynamicName")、具体的に入力する必要がありますが、そうではないか、Whereメソッドに型を指定する必要があります。しかし、それはまさにあなたが回避しようとしていることです。

于 2012-11-23T21:05:07.077 に答える