c# 如何比较和替换另一个列表<class>
c# how to compare and replace into a list<class> from another
我在检查和存储旧数据中的新数据方面没有什么问题。我有一个 class 结构如下:
public class class1
{
public List<Class2> class2List {get,set}
...
}
public class class2
{
public Class3 class3 {get,set}
...
}
public class class3
{
public string name {get,set}
public int index {get,set}
...
}
我想创建一个方法,它将采用 class 2 输入并检查索引是否与旧的 class1 相同,如果是,我想存储它。我尝试做 sme linQ 来解决我的问题,但我不是专家,我有点卡住了...
public static void SaveNewDataOnlyIfSameIndex(class1 workingData, List<class2> newdata)
{
List<class3> LocalWorkingDataClass3 = new List<class3>();
foreach(class2 item in workingData.class2)
{
LocalWorkingDataClass3.add(item.class3);
}
List<int> LocalWorkingDataIndex = new List<int>();
foreach(class3 item2 in LocalWorkingDataClass3 )
{
LocalWorkingDataIndex.add(item2.index);
}
List<class3> LocalEqualClasstoReplace = new List<class3>();
LocalEqualClasstoReplace = newdata.Where(File => LocalWorkingDataIndex.Equals(File.Index));
}
我不太明白你需要什么,但你可以尝试使用 Linq 做这样的事情:
public static void SaveNewDataOnlyIfSameIndex(Class1 WorkingData, List<Class2> Newdata)
{
List<int> LocalWorkingDataClass3Index = WorkingData.Class2List.Select(i => i.Class3.Index).ToList()
List<Class3> LocalEqualClasstoReplace = new List<Class3>();
LocalEqualClasstoReplace = newdata.Where(f => LocalWorkingDataClass3Index.Contains(f.Class3.Index));
}
Hi.
First of all, I am not sure that i got your question.
public class Class1
{
public List<Class2> class2List {get;set;}
}
public class Class2
{
public string name {get;set;}
public int index {get;set;}
}
public void CompareAndReplace(ref Class1 orginalDataList, Class2 newData){
var check=orginalDataList.class2List.FirstOrDefault(g=>g.index==newData.index);
if(check!=null){
check.name=newData.name;
}
}
//example to use assuming to "orginalDataList" has some datas..
CompareAndReplace(ref orginalDataList,new Class2{index=1,name="Hello"});
我在检查和存储旧数据中的新数据方面没有什么问题。我有一个 class 结构如下:
public class class1
{
public List<Class2> class2List {get,set}
...
}
public class class2
{
public Class3 class3 {get,set}
...
}
public class class3
{
public string name {get,set}
public int index {get,set}
...
}
我想创建一个方法,它将采用 class 2 输入并检查索引是否与旧的 class1 相同,如果是,我想存储它。我尝试做 sme linQ 来解决我的问题,但我不是专家,我有点卡住了...
public static void SaveNewDataOnlyIfSameIndex(class1 workingData, List<class2> newdata)
{
List<class3> LocalWorkingDataClass3 = new List<class3>();
foreach(class2 item in workingData.class2)
{
LocalWorkingDataClass3.add(item.class3);
}
List<int> LocalWorkingDataIndex = new List<int>();
foreach(class3 item2 in LocalWorkingDataClass3 )
{
LocalWorkingDataIndex.add(item2.index);
}
List<class3> LocalEqualClasstoReplace = new List<class3>();
LocalEqualClasstoReplace = newdata.Where(File => LocalWorkingDataIndex.Equals(File.Index));
}
我不太明白你需要什么,但你可以尝试使用 Linq 做这样的事情:
public static void SaveNewDataOnlyIfSameIndex(Class1 WorkingData, List<Class2> Newdata)
{
List<int> LocalWorkingDataClass3Index = WorkingData.Class2List.Select(i => i.Class3.Index).ToList()
List<Class3> LocalEqualClasstoReplace = new List<Class3>();
LocalEqualClasstoReplace = newdata.Where(f => LocalWorkingDataClass3Index.Contains(f.Class3.Index));
}
Hi. First of all, I am not sure that i got your question.
public class Class1
{
public List<Class2> class2List {get;set;}
}
public class Class2
{
public string name {get;set;}
public int index {get;set;}
}
public void CompareAndReplace(ref Class1 orginalDataList, Class2 newData){
var check=orginalDataList.class2List.FirstOrDefault(g=>g.index==newData.index);
if(check!=null){
check.name=newData.name;
}
}
//example to use assuming to "orginalDataList" has some datas..
CompareAndReplace(ref orginalDataList,new Class2{index=1,name="Hello"});