0
Bei dieser Frage geht es nicht um das Klonen von Objekten, sondern um die korrekte Verwendung von Linq zur Verwendung einer Erweiterungsmethode zum Klonen einer Objektliste. Code nur zur Veranschaulichung.Linq und Klonen von Objekten in C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<MyObj> myObjs = DB.GetAllMyObjs(); //fictitious database calls returns a list of Objs
//I now want to use my extension method clone to clone all the MyObjs in myObjs
// this throws an error;
List<MyObj> myObj2 = myObjs.ForEach(a => a.Clone()).ToList(); //ERROR = "."cannot be applied to type void
}
}
public class MyObj
{
public int Id { get; set; }
}
public static class MyObjExtentions
{
public static MyObj Clone(this MyObj myObj)
{
var myObjClone = new MyObj();
myObjClone.Id = myObj.Id;
return myObjClone;
}
}
}
Ich erhalte einen Fehler auf dem Code Linq. Ist dies möglich oder benötigen Sie eine foreach-Schleife?
Haben Sie gedacht, ICloneable anstelle einer Erweiterungsmethode zu verwenden? – maximdumont
Ich bin ziemlich sicher, dass 'ForEach' nicht LINQ ist. – Abion47
Korrigieren. 'ForEach() 'ist eine Methode für 'List (T)'. Siehe https://msdn.microsoft.com/en-us/library/bwabdf9z(v=vs.110).aspx. Der große Unterschied ist, dass alle LINQ-Erweiterungen etwas zurückgeben und von Natur aus unveränderbar sind. 'ForEach' kann verwendet werden, um die Objekte zu manipulieren, auf denen iteriert wird. – Michael