在 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' ,我将不胜感激。
谢谢
假设只有单个值(或者您只想添加第一个出现的值),其中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 中更改某些内容,它将应用于使用它的所有对象。