2017-05-13 6 views
0

リストに項目を追加するための文字列配列とforループがあります。ここでC#ループの代わりにLinqメソッドを使用する

は私のコードです:

//customers table : 
// Firstname, Lastname, Age, BrowserName, Date 

string[] browsers = {"chrome", "Firefox", "Edge"} 
var users = db.customers.ToList(); 

list<string> names = new List<string>(); 

for(var i = 0; i < browsers.lenght; i++) { 
    names.Add(users.where(x => x.BrowserName == browsers[i]).FirstName); 
}  

ではなくforのLINQのメソッドまたは何か他のものを使用する方法はありますか?

+5

* real *コードの代わりに-codeを使用します。これはあなたの実際のコードではないので、あなたが残したあなたの実際のコードに重要なものがないことを確かめることはできません。 [mcve]を入力してください。しかし、順序を気にしない限り、単に 'var names = db.Customers.Where(u => browsers.Contains(u.BrowserName))を使うことができます。(u => u.FirstName).ToList(); '。 (あなたは 'db.Customers.ToList()'を一般的に呼び出すべきではありません。データベースからすべての顧客を引っ張ってくるからです...) –

+0

@CodeCAsterによってフラグが立てられているとは分かりません(x => x.FirstName)); ' –

+0

@FrankFajardo:いいえ、あなたはあなたの' for'ループをこれで置き換えることができます: 'names.AddRange(users.where(x => browser.Contains(x.BrowserName)それはコンパイルされません。 –

答えて

0

次のようforeachことによってそれを行うことができます。代わりに

for(var i = 0; i < browsers.lenght; i++) { 
    names.Add(users.where(x => x.BrowserName == browsers[i]).FirstName); 
} 

利用

browsers.ToList().Foreach(x => users.where(y => y.BrowserName == x).ToList().Foreach(z => names.Add(z.FirstName))) 
3

をそれは本当にあなたが擬似を投稿したことを助けていません。この

names = users.Where(x => browsers.Contains(x.BrowserName)).Select(y => y.FirstName).ToList(); 
関連する問題