2012-03-23 17 views
0

は私が識別子の代わりに文字列連結を使用してlinqクエリを実行できますか?

var queryItems = rawQuery.ObsDataResultList.AsQueryable().Where("Name = @0 AND AuthoredDate = " + dateKey.ToString(), selectedItem).ToList();

注私は変更さ唯一の事は、識別子を削除したにクエリを更新したい

var queryItems = rawQuery.ObsDataResultList.AsQueryable().Where("Name = @0 AND AuthoredDate = @1" +, selectedItem, dateKey).ToList();

正常に動作し、クエリを持っています。今、私はエラーを受け取ります。

Operator '='オペランドタイプ 'DateTime?'と互換性がありません。 「Int32」

元のクエリに戻すことなくエラーを修正するにはどうすればよいですか?

+2

なぜあなたはそれをしたいですか?なぜあなたは慎重に良いクエリを崩壊したいのですか? –

+0

@ MarkByers - 私はそのようなwhereステートメントのリストをとり、それらを構造体の定数として格納する予定です。構造体は、サポートされているクエリの単一の参照ポイントになる可能性があります。リストのパラメータでは、パラメータの数が大幅に変わる可能性があるため、これを行うのは難しいです。最初のフォームにいくつかの技術的利点がありますか?例えば。注射を避けるためにパラメータをパラメータ化するのに似た何か? –

+0

@PBrianMackey:はい、注射を受けることができます。なぜパラメータのリストを保存するのが難しいのですか? –

答えて

3
あなたが不足している

引用符は:

.Where("Name = @0 AND AuthoredDate = \"" + dateKey + "\"") 

しかし、このようなあなたのコードを台無しに本当に悪いアイデアのように思えます。元のクエリははるかに優れているようです。

+0

ありがとう - 私はこれを念頭に置いて、確かに元のフォームに基づいた解決策を導き出そうとします。 –

+0

@ P.Brian.Mackey:私はもともと一重引用符が必要であると仮定しましたが、グーグル後に私は[この回答](http://stackoverflow.com/a/2288328/61974) 。 –

関連する問題