0

ラムダを使用して文字列を連結し、その連結値を特定の条件と比較したいと考えています。

Invoices = Invoices.Where(f => ((string)f.invoice_prefix + String.Format("{0:0000}", Convert.ToInt32(f.invoice_number))).ToLower().Equals(condition7));

しかし、エラーメッセージが表示されます:

名前 'f' は現在のコンテキストに存在しません

次のようないくつかの String.Format および String.Concat バリアントを試しました

Invoices = Invoices.Where(f => (String.Format("{0}{1}",f.invoice_prefix,String.Format("{0:0000}", Convert.ToInt32(f.invoice_number)))).ToLower().Equals(condition7));

しかし、成功しません...誰かが構文を手伝ってくれますか?

前もって感謝します!

4

1 に答える 1

2

Linq to Entities は、すべての .NET フレームワーク メソッドを理解するわけではありません。

これをデータベースで SQL ステートメントとして実行するには、SQL に変換できる演算子のみを使用する必要があります。つまり、プリミティブ データ型を使用して述語を書き直す必要があります。

だから、このようなもの:

string prefixCondition = ...
int invoiceNumberCondition = ...

Invoices.Where( f =>
  f.invoice_prefix == prefixCondition
  &&
  f.invoice_number == invoiceNumberCondition 
)

生成された SQL ステートメントが表示されるので、LinqPadを使用してテストすることをお勧めします。

于 2012-05-04T08:14:09.253 に答える