所以我有两个“文件”,都有很多属性。一个文档是已填写的文档的实例。我需要检查属性中是否有“值”(因为它们主要是可以为空的?),如果是,则将当前属性的值赋给另一个文档的属性。
实施例
if (documentA.FirstProperty.HasValue)
{
documentB.FirstProperty = documentA.FirstProperty
}
但有没有办法让这个更清楚?我想也许我可以创建一个文档类型列表并使用foreach循环并检查当前属性是否有值,如果是,则将其分配给新文档。
已经获得了一个名为 oldDocument
的文档实例示例:
List<oldDocument> listOfProperties = new List<oldDocument>();
foreach (var property in listOfProperties)
{
if (property.HasValue)
{
documentB.property = documentA.property;
}
}
foreach循环中的变量“property”是否代表属性的名称?
答案 0 :(得分:3)
你可以使用linq。
var nullProps = doc1.SelectMany(d => d.Props).Where(prop => prop == null);
//Assign
foreach(var prop in nullProps)
doc1.Prop[prop.Name] = doc2.Prop[prop.Name];
答案 1 :(得分:3)
Null coalesce至少可以简化赋值块:
DocumentA.FirstProperty = DocumentB.FirstProperty ?? DocumentA.FirstProperty;