使用Lambda和Func<>的动态构造函数
本文关键字:动态 构造函数 Lambda Func 使用 | 更新日期: 2023-09-27 18:17:27
我有一个多线程应用程序,正在BlockingCollection队列上创建字符串列表,我想把字符串列表转换为一个或两个步骤的项目对象集合
是否可以创建一个func<>或lambda方法来实现这种类型的结果
public class item
{
public string name { get; set; }
public item(string nam)
{
name = nam;
}
}
IList<string> alist = new string[] { "bob","mary"};
取字符串类型的IList <>或IEnumerable<>并返回IList
对于单个项Func<>
Func<string, item> func1 = x => new item(x);
但本质上签名看起来像
Func<IEnumerable<string>,IList<item>> func2 = x=> x.ForEach(i => func1(i));
我是想把一个圆钉子放在方孔还是我的语法/逻辑只是错误的
Thanks in advance
你只是想"重塑"IList<string>
作为IList<item>
吗?
IList<string> listOfStrings = new string[] { "bob","mary"};
IList<item> listOfItems = listOfStrings.Select(s => new item(s)).ToList();
您将不得不使用Select
投影而不是ForEach
,然后将结果IEnumerable<item>
转换为使用ToList()
的列表-这应该可以工作:
Func<IEnumerable<string>,IList<item>> func2 = x => x.Select( i => new item(i)).ToList();
IEnumerable<item> myfunc(IEnumerable<string> stringlist)
{
var q = from s in stringlist
select new item(s);
return q.ToList();
}