我如何在c#中不使用foreach将一个列表中包含的项目转移到另一个列表中?
当前回答
这是如果需要将一个属性复制到另一个列表:
targetList.AddRange(sourceList.Select(i => i.NeededProperty));
其他回答
用于元素列表
List<string> lstTest = new List<string>();
lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");
如果你想复制所有元素
List<string> lstNew = new List<string>();
lstNew.AddRange(lstTest);
如果你想复制前3个元素
List<string> lstNew = lstTest.GetRange(0, 3);
这是如果需要将一个属性复制到另一个列表:
targetList.AddRange(sourceList.Select(i => i.NeededProperty));
public static List<string> GetClone(this List<string> source)
{
return source.Select(item => (string)item.Clone()).ToList();
}
你可以试试这个:
List<Int32> copy = new List<Int32>(original);
或者如果你使用c# 3和。net 3.5,使用Linq,你可以这样做:
List<Int32> copy = original.ToList();
我看到这个答案仍然得到了点赞。好吧,这里有一个秘密给你:上面的答案仍然是使用一个foreach。请不要再投票了。
很容易映射不同的列表集由linq没有for循环
var List1= new List<Entities1>();
var List2= new List<Entities2>();
var List2 = List1.Select(p => new Entities2
{
EntityCode = p.EntityCode,
EntityId = p.EntityId,
EntityName = p.EntityName
}).ToList();
推荐文章
- 在每个列表元素上调用int()函数?
- 如何从枚举中选择一个随机值?
- 将Set<T>转换为List<T>的最简洁的方法
- 驻留在App_Code中的类不可访问
- 在链式LINQ扩展方法调用中等价于'let'关键字的代码
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 在Python中插入列表的第一个位置
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- 在javascript中从平面数组构建树数组
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法