我如何在c#中不使用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();
其他回答
要将一个列表的内容添加到已经存在的另一个列表,您可以使用:
targetList.AddRange(sourceList);
如果您只是想创建一个列表的新副本,请参阅顶部的答案。
此方法将创建列表的副本,但您的类型应该是可序列化的。
使用:
List<Student> lstStudent = db.Students.Where(s => s.DOB < DateTime.Now).ToList().CopyList();
方法:
public static List<T> CopyList<T>(this List<T> lst)
{
List<T> lstCopy = new List<T>();
foreach (var item in lst)
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, item);
stream.Position = 0;
lstCopy.Add((T)formatter.Deserialize(stream));
}
}
return lstCopy;
}
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。请不要再投票了。
用于元素列表
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);
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 为什么元组可以包含可变项?
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 不区分大小写的“in”
- 自动化invokerrequired代码模式
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?
- 如何分裂()一个分隔字符串到一个列表<字符串>