2011-02-06 64 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); 
}