Is is possible to populate a datatable using a Lambda expression(C#3.0)
我有一个数据表。 我正在其中填充一些值。
例如
1 2 3 4 5 6 7 8 9 | DataTable dt =new DataTable(); dt.Columns.Add("Col1",typeof(int)); dt.Columns.Add("Col2",typeof(string)); dt.Columns.Add("Col3",typeof(DateTime)); dt.Columns.Add("Col4",typeof(bool)); for(int i=0;i< 10;i++) dt.Rows.Add(i,"String" + i.toString(),DateTime.Now,(i%2 == 0)?true:false); |
这个程序没有错,可以给我预期的输出。
但是,最近,我正在学习Lambda,并且已经学习了一些基础知识。
因此,我试图做与下相同的事情
1 2 3 4 5 | Enumerable.Range(0,9).Select(i = > { dt.Rows.Add(i,"String" + i.toString(),DateTime.Now,(i%2 == 0)?true:false); }); |
但是我没有成功。
我的方法是正确的吗(是的,我知道我遇到了编译时错误;因为到目前为止对此主题的知识还不够)?
我们能以我的方式实现这一目标是一个很大的疑问(我不知道..只是试一试)。
如果是这样,有人可以在这方面帮助我。
我正在使用C#3.0和dotnet framework 3.5
谢谢
Select方法返回可枚举的延迟执行。 要使可枚举执行,必须枚举它。 另外-dt.Rows.Add返回void,因此它是一个Action,而不是Func,并且不能在Select调用中使用。
而不是使用选择,如何使用
1 | ToList< T >().ForEach< T >(Action< T >) |
如:
1 2 3 4 5 6 | Enumerable.Range(0,9) .ToList() .ForEach(i => { dt.Rows.Add(i,"String" + i.ToString(), DateTime.Now, (i%2 == 0) ); }); |
你很亲密 只需除去
1 2 | Enumerable.Range(0, 9).Select(i => dt.Rows.Add(i, "String" + i.ToString(), DateTime.Now, (i%2 == 0) ? true : false)); |