【发布时间】:2017-07-13 05:18:05
【问题描述】:
我正在尝试理解 lambda 表达式、扩展方法、Linq 和 IEnumerable 接口的概念。你可以猜到我对 c sharp 很陌生。在这里我想出了一个问题,它将包含所有上述概念。这里我有一个包含三个对象的列表。我想更改指定索引中的学生对象的名称属性。我编写了一个接受回调函数的扩展方法。回调函数接受一个整数索引和一个新的名称字符串。它应该更改名称属性并返回对象。但是我的代码未能这样做,因为我不确定如何在扩展方法中将参数传递给 Func 回调。我需要一些助手来理解问题并修复我的错误代码?
class Program
{
static void Main(string[] args)
{
List<Students> students = new List<Students>();
students.Add(new Students(111443, "sakib"));
students.Add(new Students(111445, "zami"));
students.Add(new Students(111444, "habib"));
var student = students.First();
var changed1 = students.Change((int num,string newname) => { return students[num].s_name = newname;});
}
}
public class Students
{
public int s_id;
public string s_name;
public Students(int id, string name)
{
this.s_id = id;
this.s_name = name;
}
}
public static class LinqHelper
{
public static IEnumerable<T> Change<T> (this IEnumerable<T> source, Func<int,string,T> callback)
{
var myList = new List<Students>();
myList.Add(callback(1,"zami")); // i was passing parameter here which is not so helpful i guess !
return myList;
}
}
【问题讨论】:
标签: c# asp.net-mvc linq lambda