【发布时间】:2019-10-26 16:00:01
【问题描述】:
是否有一种优雅的方法可以在 C# 中展平多行(使用或不使用 Linq)?
例如假设
var rows = new List<Row> {
new Row() { Col1 = 1, Col2 = null ,Col3 = null},
new Row() { Col1 = null, Col2 = 2 ,Col3 = null},
new Row() { Col1 = null, Col2 = null ,Col3 = 3},
new Row() { Col1 = 2, Col2 = null ,Col3 = null},
};
我想调用类似的东西
var res = rows.flatten();
这会产生
var res = new List<Row> {
new Row() { Col1 = 1, Col2 = 2 ,Col3 = 3},
new Row() { Col1 = 2, Col2 = null ,Col3 = null}
};
有什么想法吗?
【问题讨论】:
-
它并不清楚您想要实现什么。第二个版本并没有像这样被展平,只是数据移动了要删除空值?
-
你能给出"flatten"的定义吗?通常,flattening a list 发生在列表列表中。
-
大家好,我可能用错了词……但结果是对我想要实现的目标的准确描述。
-
所以你想通过垂直向上移动数据来删除所有空值
-
如果第一行的 Col2 不是 null 而是 2,你的展平规则应该是什么?您是否仍然与您的问题相同的结果或相同的行数但 Col2 = 4,或者结果应该有 3 行?