我有一个通用列表。
已满。
其名称为list1。
我们想使用LINQ编辑其项目。
输入------> textbox1.text(list1中的键)
class11中的键--------> string _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(index)
3- lst.Insert(index,new obj);
确定.... !!? 请给我代码linq。 (案例1)
感谢名单
答案 0 :(得分:4)
嗯,我不知道你想要什么,但我认为你想要使用LINQ和其他一些数据编辑List中的项目可能在文本框中。
无论如何以下是一个示例,为您提供如何开始的想法:(在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();
答案 1 :(得分:0)
我认为您可能意味着要根据用户输入的内容编辑列表中的项目? IE:根据某个谓词过滤对象列表?
如果是这种情况,你可以像这样使用linq:
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;
然后,您可以直接编辑所需的项目:
item.Value = newValue;
或通过迭代:
foreach(MyType i in items)
{
i.Value = newValue;
}
只需使用lambda表达式调用.Where()函数,就可以在没有LINQ的情况下实现相同的功能,例如:
List<MyType> items = myList.Where(i => i.Key == key);
答案 2 :(得分:0)
您可以使用Linq选择新列表,但不能修改现有列表。原因是Linq在内部处理可枚举而不是列表。与列表一起使用的相同代码可以使用数组或使用返回可枚举和yield
值的函数。以下是使用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);
}