2009-07-27 14 views
2

Linq to Entitiesを使用してテーブルの一意の参照番号を照会しようとしています。 IDはテキストボックスを介して提供されるため、コード内に文字列があります。明らかに、データベーステーブルでは、フィールドは整数なので、まず、.ToStringを使用してみて、次にvarchar()と同じ方法で.Containsを使用してみました。これは動作していないようで、エラーは.ToStringメソッドから来ています。Linq文字列を使用してintを照会します。

どうすればよいですか?私はテキストボックスの内容を整数に変換しようとしましたが、これはユーザーが部分的な番号の代わりに正確なintを入力する必要があることを意味します。

多くのおかげ

+2

あなたのために働いていないLINQクエリの例を提供します。 –

答えて

-1
int value; 
if(int.TryParse(someTextString,out value)) 
{ 
    //do work here using integer comparision with 'value' 
} 

あなたは "部分" の値によってどのような意味ですか?ユーザーが指定した文字列に何を追加していても、値を解析する前に行うことができます。あなたの説明はあまり明確ではありません。

実際にワイルドカード検索を実行しようとすると、DB int値に対してLinqからエンティティを使用して失敗します。私はlteがsometable.intvalue.ToString()。Contains()の意味をよく理解するのではないかと疑う。この場合、クライアント側で数学的検索を行い、検索範囲が必要な範囲を特定したり、SQLの終わりに検索を行うストアドプロシージャを記述したりする必要があるかもしれません。

+0

彼は彼が "12"を入力して "12" "121"と "1234"を返すことを望んでいると思っていますね...(そして312も "mayb?") – Benjol

1

toStringはなぜですかあなたのために働く。私はこれをメソッドに試しました。両方返された回答:

List<int> ids = new List<int>() { 111, 211, 311, 422, 522, 622, 733, 833, 933 }; 
string query = "11"; 

var result = ids.Where(id => id.ToString().Contains(query)); 
var result2 = ids.ConvertAll<string>(i => i.ToString()).Where(id => id.Contains(query)); 
// Both return the first three items 
+3

コードはlinq-あなたのコードが示しているようにオブジェクトへのLinq-to-entitiesは、OPsの場合に式が変換されるSQLにあまり変換されないかもしれないので、これが気に入らないかもしれません。 – spender

関連する問題