2016-08-16 2 views
0

C#アプリケーションではGUIDを比較する必要があります。データベースではUPPERCASEですが、コードではLOWERCASEです。DBSetで動作しているC#のリスト項目ではない文字列比較

私はこれを文字列で処理できることを理解しています。コンパイルまたは文字列。次のシナリオを理解したいと思います。ライン後

var myInstanceId ='GUID'; 

完璧な比較、

var applicationSettings = db.ApplicationSettingsSet 
    .Where(x => x.myInstanceId == myInstanceId).ToList(); 

が原因db.ApplicationSettingsSetにかもしれない

public DbSet<ApplicationSetting> ApplicationSettingSet { get; set; } 

EF DBのエンティティである。しかしどういうわけか、次のコードどこ

applicationSettingCategory.ApplicationSettings = applicationSettings 
    .Where(x => x.myInstanceId == myInstanceId); 
動作しません

5月現在の比較は、DBSetにないApplicationSettings &のリストで行われます。

この現象の実際の理由は何ですか?

+0

'KcsInstanceId'のデータ型は何ですか、それは' GUID'ですか? – Habib

+0

おそらく、データサーバーは大文字と小文字を区別しません。 SQL Serverを使用している場合、それが問題になります。 –

+0

両方とも 'Guid'型である限り、データ変換については心配する必要はありません – techspider

答えて

1

この1つはLINQ to SQLは次のとおりです。

var applicationSettings = db.ApplicationSettingsSet.Where(x => x.myInstanceId == myInstanceId).ToList(); 

は、SQLに文を比較し変換し、実際の比較は、データベース内で行われています。データベースが大文字と小文字を区別しているかどうかに応じて変更することができます。ここで

applicationSettingCategory.ApplicationSettings = applicationSettings.Where(x => x.myInstanceId == myInstanceId); 

あなたはString.Equalsのためのような大文字と小文字を区別しないこととの比較を指定する必要があります。これはオブジェクトへのLINQで

+0

ありがとう:)これは私が@Mateuszについて確かめたい唯一のものです –

関連する問題