2011-02-06 20 views
0

我有一個通用列表。編輯列表中的項目<className>與linq

它已滿。

它的名字是list1。

我們想用LINQ編輯它的Items。

intput ------> textbox1.text(在List1鍵)在class11

關鍵-------->串_number

什麼是代碼編輯?

更新

這裏是我想:

List lst= new List(); 

lst.Add("Shekhar1"); 

lst.Add("Shekhar2"); 

lst.Add("Shekhar3"); 

lst.Add("Shekhar4"); 

lst.Add("Shekhar5"); 

//code edit item (Shekhar3) -------> Shekhar88 //code to edit the item...????? 

輸出:

Shekhar1 

Shekhar2 

Shekhar88 

Shekhar4 

Shekhar5 

進行編輯(更新)中的泛型列表的項目:

1-用linq搜索到通用列表------->輸出索引項目

2- lst.RemoveAt(指數)

3- lst.Insert(指數,新的obj);

ok .... !!? 請給我代碼linq。 (情況1)

感謝名單

+3

請更正你的問題一點我不能在這裏解讀的問題。 – 2011-02-06 14:58:08

+0

我想編輯列表中的項目使用linq – 2011-02-06 15:08:05

+0

好的我已經給出了一個答案..是你想要什麼.. – 2011-02-06 15:10:05

回答

4

好吧,我不知道你想要什麼在這裏,但我認爲是要通過使用LINQ與其他一些數據可能是在文本框中編輯在列表中的項目。

反正下面是一個例子來給你如何Ø開始一個想法:(上LINQPAD運行)

List<string> lst= new List<string>(); 

lst.Add("Shekhar"); 
lst.Add("Shekhar"); 
lst.Add("Shekhar"); 
lst.Add("Shekhar"); 
lst.Add("Shekhar"); 

var edited = (from item in lst 
      select (item = "Pro")).ToList(); 
lst = edited; 

lst.Dump(); 

輸出:

Pro
Pro
Pro
Pro
Pro

更新

好基礎的在這裏您的建議是將工作的代碼

string search_string = "Shekhar3"; 
string replacement_string = "Shekhar88"; 
lst = (lst.Select(item => { 
          if(item == search_string) return item = replacement_string; 
          else return item; 
           })).ToList(); 
0

我想你可能意味着你想根據用戶輸入的內容來編輯列表中的項目? IE:根據謂詞篩選對象列表?

如果是這樣的話,你可以使用LINQ做它像這樣:

item.Value = newValue; 

或者通過迭代:

List<MyType> myList = PopulateList(); 

string key = textBox1.Text; 
string newValue = "new value"; 

// If you only want a single item... 
MyType item = (from item in myList 
       where item.Key == key 
       select key).FirstOrDefault(); 

// If you want a list of matching items 
List<MyType> items = from item in myList 
        where item.Key == key 
        select key; 

可以那麼你要直接修改的項

foreach(MyType i in items) 
{ 
    i.Value = newValue; 
} 

只需使用lambda expressio調用.Where()函數,就可以在不使用LINQ的情況下實現相同的功能n,例如:

List<MyType> items = myList.Where(i => i.Key == key); 
0

您可以使用Linq選擇新列表,但不能修改現有列表。原因是Linq處理枚舉數,而不是內部列表。與列表一起使用的相同代碼可以用於數組或使用返回可枚舉值和yield s值的函數。以下是如何更換使用Select()(ideone)項目:

List<string> list = (new string[] { 
    "Shekhar1", "Shekhar2", "Shekhar3", "Shekhar4", "Shekhar5" } 
).ToList(); 

string match = "Shekhar3"; 
string replace = "Shekhar88"; 
List<string> newList = list.Select(x => x == match ? replace : x).ToList(); 
list = newList; 
foreach (string value in list) { 
    Console.WriteLine("{0}", value); 
}