我有这个列表,我正在检查,然后创建另一个列表,其中定义不等于null。
var new = rootObject.webWordForms
.Where(w => w.definition != null)
.ToList();
public class WebWordForm
{
public string definition { get; set; }
public string partOfSpeech { get; set; }
public int sourceId { get; set; }
public List<string> synonyms { get; set; }
public List<string> typeOf { get; set; }
public List<string> hasTypes { get; set; }
public List<string> derivation { get; set; }
public List<string> examples { get; set; }
}
是否有一种简单的方法可以将sourceId
列表中的rootObject.webWordForms
设置为值2?
答案 0 :(得分:3)
您可以使用List ForEach
方法执行此操作,但请注意,这与循环没什么不同。
var list = rootObject.webWordForms
.Where(w => w.definition != null)
.ToList();
list.ForEach(x=> x.sourceId =2);
答案 1 :(得分:3)
var new = rootObject.webWordForms
.Where(w => w.definition != null)
.Select(w => new WebWordForm{
definition = w.definition,
partOfSpeech = w.partOfSpeech,
sourceId = 2,
synonyms= w.synonyms,
typeOf = w.typeOf,
hasTypes = w.hasTypes,
derivation = w.derivation,
examples = w.examples
}).ToList();
答案 2 :(得分:2)
在.ForEach()
上使用new
,这会在列表new
上重复并更新参数。
var finalList = rootObject.webWordForms
.Where(w => w.definition != null)
.ToList();
finalList.ForEach(n=>n.sourceId = 2);
注意 - 如果查询的最终列表是您的return
,则需要在返回任何内容之前执行上述操作。
虽然我建议ForEach()
,但许多文章都专注于避免它。
另一种选择,
var finalList = rootObject.webWordForms
.Where(w => w.definition != null)
.ToList();
finalList.All(n=>{
n.sourceId = 2;
return true;
});