2017-04-10 21 views
1

以下のコードはうまくいきますが、結果として得たいものがあります。 このコードは、検索条件に一致するデータベーステーブルの最初の行を示しています。C#でEntity Frameworkを使用してデータベースを検索しています

userName tbl = new userName(); 

bool flag = db.userName.Where(x => x.name == txtName.Text || x.City==txtCity.Text).Any(); 

if (flag) 
{ 
    tbl = db.userName.Where(x => x.name == txtName.Text || x.City==txtCity.Text).First(); 
    userNameBindingSource.DataSource = tbl; 
} 
else 
{ 
    MessageBox.Show("This record does not exist in the database.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 

検索条件に一致する行が複数ある場合はどうなりますか?結果リストにすべてのものを表示したいのですが、基準に一致する最初のものだけではありません。

私はこれを試してみましたが、何かが間違っていた:

tbl = db.userName.Where(x => x.name == txtName.Text || x.City==txtCity.Text).All(); 

は、どのように私はこれを達成するために上記のコードを改良する必要がありますか?

答えて

3

アイテムのリストを取得する場合は、クエリの最後にLINQ .ToList()を使用できます。

List<UserName> tbl = db.UserNames.Where(x => x.Name == txtName.Text || x.City == txtCity.Text).ToList(); 

これは、DBContextで構築したIQueryableを評価します。 ToListはエンティティのリストを返します。あなたもToArrayを使うことができます:)

.All()は、あなたの式との列挙一致のすべての項目を検証します。これに

tbl = db.userName.Where(x => x.name == txtName.Text || x.City==txtCity.Text).First(); 

:例:この

.All(x=> x.Contains("text")). 
+0

小さなメモ: 'tbl'は' List 'ではなく' userName'です。 – msitt

+0

小文字:大文字小文字を区別しない可能性を考慮する必要があります。 –

+0

素早く対応いただきありがとうございます。できます。それが私が求めていたものです。 – Laki

2

変更

'VAR' を使用して
var items = db.userName.Where(x => x.name == txtName.Text || x.City==txtCity.Text).ToList(); 

だけで、システムが使用を暗示することにより、最良のタイプを評価することを意味します。あなたが特定のものを呼び出すことを望んでいない限り、ほとんどの時間はもはや必要ではありません。

本のすべて:

bool flag = db.userName.Where(x => x.name == txtName.Text || x.City==txtCity.Text).Any(); 

if (flag) 
{ 
// code... 
} 

がLINQについていいですほとんどの事のように完全に不要ですが、あなたが.Where、.ANY、.Exists、.Containsと直接インライン述語の使用量の大半を行うことができますされ、あなたが何かlike.First、.Single、.FirstOrDefaultなど行うと

context.(tableOrObject) 
    .Where(x => x.Prop == (somePredicate)) 
    .Select(x => new { Id = x.Id, Desc = (some series of things)}) 
    .ToList(); 

...あなたがあなたのコレクションを制限している:等...そして、あなたは、単により多くの拡張メソッドとそのオフのようなものをチェーンシングルリターン。 .ToList()または.ToArray()は、データをコレクションリターンに実現するために一般的です。

+0

説明をいただきありがとうございます。ソリューションも機能します。 if文を使用して、検索基準に一致するレコードがあるかどうか、警告メッセージを表示しないかどうかを確認しました。 – Laki

関連する問題