在 IEnumerable 对象中插入列表

本文关键字:插入列 列表 插入 IEnumerable 对象 | 更新日期: 2023-09-27 18:35:18

我有一个IEnumerable 'myobjects',其中myModel结构如下。

public class myModel
    {
        public string SchemaName { get; set; }
        public string PropertyName { get; set; }
        public List<string> optionvalues { get; set; }
    }

在上面的IEnumerable中,我有一个myModel(假设使用SchemaName 'abc'和PropertyName 'xyz'),其中选项值为null(count=0)。

我有一个列表"mylist",其中包含需要在上述 IEnumerable 中插入的值,以代替空选项值。

如果有人能指导我如何在 myobjects 中插入 mylist,其中 SchemaName 为 'abc' 而 PropertyName 为 'xyz' ,我将不胜感激。

谢谢

在 IEnumerable 对象中插入列表

假设只有单个值(或者您只想添加第一个出现的值),其中myobjects具有该架构名称和属性名称 你可以这样做:

var obj = myobjects.Single(x => 
    x.SchemaName =="abc" && x.PropertyName == "xyz" && (x.optionvalues == null || x.optionvalues.Count == 0));
obj.optionvalues = mylist;

var obj = myobjects.First(x => 
    x.SchemaName =="abc" && x.PropertyName == "xyz" && (x.optionvalues == null || x.optionvalues.Count == 0));
obj.optionvalues = mylist;

或者,使用 Where 并且可能ForEach

var objcoll = myobjects.Where(x => 
    x.SchemaName =="abc" && x.PropertyName == "xyz" && (x.optionvalues == null || x.optionvalues.Count == 0)).ToList();
objcoll.ForEach(x => x.optionvalues = mylist);
var filtered = myobjects.Where(o=>o.SchemaName =="abc" && o.PropertyName == "xyz" && o.optionvalues==null);
foreach (var obj in filtered)
{
   obj.optionvalues=mylist;
}

请注意,在此实现中,所有对象都将引用相同的列表,如果您在 MyList 中更改某些内容,它将应用于使用它的所有对象。