大文字と小文字を区別する強い形式のDataSet
には、LINQ to DataSetを使用してデータの取得とフィルタリングに問題があります。私のサンプルプロジェクトでは、DataSet1という厳密に型指定されたDataSetを作成しました。これには、Customersと呼ばれる単一のDataTable
が含まれています。インスタンス化および移入するには、私は、行のカップル(気づく名のケーシング)を作成:大文字と小文字を区別するLINQ to DataSet
// Instantiate
DataSet1 ds = new DataSet1();
// Insert data
ds.Customers.AddCustomersRow(1, "Smith", "John");
ds.Customers.AddCustomersRow(2, "SMith", "Jane");
次に、私は簡単に取得することができます/使用してフィルタをデータセットの内蔵Select
機能:
var res1 = ds.Customers.Select("LastName LIKE 'sm%'");
Console.WriteLine("DataSet Select: {0}", res1.Length);
DataSet Select: 2
var res2 = from c in ds.Customers where c.LastName.StartsWith("sm") select c;
Console.WriteLine("LINQ to DataSet: {0}", res2.Count());
LINQ to DataSet: 0
私は既にインスタンスデータセットのCaseSensitive
チェックしました:同じ操作を実行するためにデータセットにLINQを使用しようとしたとき
トラブルが始まりますプロパティとCustomer DataTableのCaseSensitive
プロパティの両方がfalseです。また、Select
方法を使用すると、DataSet
がフィルタリングを実行し、LINQクエリが別の処理を実行していることも認識しています。それが変わるよう
...where c.LastName.StartsWith("sm", StringComparison.CurrentCultureIgnoreCase) select c;
を...:コードのこのタイプの
私の希望と欲望は、私が実際に使用するために、現在のすべてのクエリを変更することはできませんので、ユニットテストに私たちのCompiled LINQ to SQLクエリを、それを使用していましたSQLのクエリご意見ありがとうございました!
私はこれが私が探していると思います!だから、 'ExpressionVisitor'は、私が式を交換することを可能にしますか?私はトピック[リンク] http://msdn.microsoft.com/en-us/library/bb882521%28v=vs.90%29.aspx –