简体   繁体   English

c#如何比较替换成列表<class>从另一个</class>

[英]c# how to compare and replace into a list<class> from another

I have little problem checking and storing new data from an old one.我在检查和存储旧数据中的新数据时几乎没有问题。 I have a class structured like this:我有一个 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}
        ...
    }

I want to create a method that will take a class 2 input and check if indexes are the same as old class1, if yes i want to store it.我想创建一个方法,该方法将采用 class 2 输入并检查索引是否与旧 class1 相同,如果是,我想存储它。 I try to do sme linQ to solve my problem but I am not an expert and I am a little stuck...我尝试做 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));
    }

i can't understand very well what you need, but you can try to do something like this, using Linq:我不太明白你需要什么,但你可以尝试做这样的事情,使用 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"});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM