在IEnumerable对象中插入列表

时间:2016-02-19 13:28:46

标签: c#

我有一个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&#39; abc&#39;和PropertyName&#39; xyz&#39;),其中optionvalues为null(count = 0)。

我有一个列表&#39; mylist&#39;其中包含需要在上面的IEnumerable中插入的值,而不是null optionvalues。

如果有人可以指导我如何在mymajects中插入mylist,我将不胜感激,其中SchemaName是&#39; abc&#39;和PropertyName是&#39; xyz&#39;

由于

2 个答案:

答案 0 :(得分:0)

var filtered = myobjects.Where(o=>o.SchemaName =="abc" && o.PropertyName == "xyz" && o.optionvalues==null);
foreach (var obj in filtered)
{
   obj.optionvalues=mylist;
}

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

答案 1 :(得分:0)

假设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);