使用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

使用Lambda和Func<>的动态构造函数

你只是想"重塑"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();
}