動的LINQクエリを使用してSQLデータベースにクエリを実行しようとしています。Where句で、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構文は問題なく機能しますが、動的LINQ APIを使用してこれが可能かどうかはわかりません。
SELECT [t0].[OrderNum], [t0].[OrderLine]
FROM [PcInValue] AS [t0]
WHERE ([t0].[InputName] = 'OpenWidthFt') AND (Convert(nvarchar(100), [t0].[InputValue]) = '10')
私はこれをテストしましたが、うまくいくようです(少し奇妙ですが):
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