0

動的 LINQ クエリを使用して SQL データベースにクエリを実行しようとしていますが、Wh​​ere 句で、TEXT 型のフィールドを使用して '=' 条件を評価する必要があります。

今、私はこれを持っています:

var result = DBCon.PcInValue
   .Where(String.Format("InputName = @0 and InputValue) {0} @1", f.Condition), f.Field, f.Value)
   .Select("new(OrderNum, OrderLine)");

TEXT データ型では等号演算子を使用できないため、これは機能しません。タイプ TEXT のフィールドは「InputValue」です。私はそれを次のように変換しようとしました:

var result = DBCon.PcInValue
   .Where(String.Format("InputName = @0 and Convert(nvarchar(100), InputValue) {0} @1", f.Condition), f.Field, f.Value)
   .Select("new(OrderNum, OrderLine)");

しかし、これはサポートされていないようです。

どうすればこれを行うことができるかについて、誰にも手がかりがありますか?

編集: 次の SQL 構文は問題なく動作しますが、Dynamic LINQ API を使用してこれが可能かどうかはわかりません。

SELECT [t0].[OrderNum], [t0].[OrderLine]
FROM [PcInValue] AS [t0]
WHERE ([t0].[InputName] = 'OpenWidthFt')  AND (Convert(nvarchar(100), [t0].[InputValue]) = '10')
4

1 に答える 1

1

私はこれをテストしましたが、うまくいくようです(少し奇妙ですが):

var result = DBCon.PcInValue
   .Where(String.Format("InputName = @0 and InputValue.ToString() {0} @1", f.Condition), f.Field, f.Value)
   .Select("new(OrderNum, OrderLine)");

LinqPad は、(自分のテーブルを使用して) 次のようなものに変換されていることを教えてくれます。

SELECT [t0].[Id], [t0].[Name], [t0].[InputValue]
FROM [People] AS [t0]
WHERE (CONVERT(NVarChar(MAX),[t0].[InputValue])) = @p0
于 2009-10-14T22:09:41.500 に答える