1

Name(string) 列とNumber(int) 列を持つ Employees テーブルがあります。

何でも従業員を検索できます。そう、

var query = cnn.Table<Employees>()
               .Where(x => x.Name.Contains(search) || 
                           x.Number.ToString().Contains(search));

タイプ 'SQLite.Net.SQLiteException' の例外が SQLite.Net.Platform.WinRT.dll で発生しましたが、ユーザー コードで処理されませんでした

追加情報: そのような関数はありません: tostring

数値列を文字列にキャストするにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

5

問題は、SQLLite linq が何が何であるかを認識していないことToString()です。これは、何かを行うためにオーバーライドできる C# メソッドです。使用する必要がありますSqlFunctions

var query = cnn.Table<Employees>()
               .Where(x => x.Name.Contains(search) ||              
                           SqlFunctions.StringConvert((int)x.Number).Contains(search));

.ToList()別の解決策は/AsEnumerable()の前に追加することwhereですが、そのフィルタリングはデータベースではなくC#で行われます


次のこともできます。

var query = cnn.Table<Employees>()
               .Where(x => x.Name.Contains(search) || x.Number > 0)
               .AsEnumerable()
               .Where( x => x.Number.ToString().Contains(search));
于 2016-08-04T08:49:09.043 に答える