理解できるかどうか見てみましょう...ユーザー情報を含むDBルックアップテーブルがあり、すべてのユーザーIDのリストからすべてのユーザー名が必要ですか? さらに処理を行う場合を除き、foreach ループはまったく必要ありません。選択でもそれができるのではないかと思います。このlinqステートメントを試してください...
List<string> UserNameList = context.KULLANICILAR.Where(x=> MyIntegerIdValues.Contains(x.UserId)).Select(x=>x.UserName).ToList();
LinqPad の完全なサンプルとして、以下のコードを確認してください。出力は以下にもあります...
public class KULLANICILARItem {
public int UserId {get;set;}
public string UserName {get;set;}
}
void Main()
{
// Fake DB Context
List<KULLANICILARItem> KULLANICILAR = new List<KULLANICILARItem>() {
new KULLANICILARItem() {
UserId = 1,
UserName = "Bob"
},
new KULLANICILARItem() {
UserId = 2,
UserName = "Jane"
},
new KULLANICILARItem() {
UserId = 3,
UserName = "Soner"
},
};
// Fake ID List
List<int> MyIntegerIdValues = new List<int>() {
1, 2, 3
};
List<string> UserNameList = KULLANICILAR.Where(x=> MyIntegerIdValues.Contains(x.UserId)).Select(x=>x.UserName).ToList();
UserNameList.Dump();
}
Output:
Bob
Jane
Soner
リストのリストをループするには、文字列リストの定義を foreach ループの外に移動してから、範囲を追加するだけです。
public class KULLANICILARItem {
public int UserId {get;set;}
public string UserName {get;set;}
}
void Main()
{
// Fake DB Context
List<KULLANICILARItem> KULLANICILAR = new List<KULLANICILARItem>() {
new KULLANICILARItem() {
UserId = 1,
UserName = "Bob"
},
new KULLANICILARItem() {
UserId = 2,
UserName = "Jane"
},
new KULLANICILARItem() {
UserId = 3,
UserName = "Soner"
},
new KULLANICILARItem() {
UserId = 4,
UserName = "Jim"
}
};
List<string> UserNameList = new List<string>();
foreach(var StringIdValues in new string[] { "1,2", "3,4"} )
{
List<int> MyIntegerIdValues = StringIdValues.Split(',').Select(i => int.Parse(i)).ToList();
UserNameList.AddRange(KULLANICILAR.Where(x=> MyIntegerIdValues.Contains(x.UserId)).Select(x=>x.UserName).ToList());
}
UserNameList.Dump();
}