2 回答

TA貢獻1862條經(jīng)驗 獲得超7個贊
根據(jù)評論,我會避免使用這種LoadFromCollection方法并采用傳統(tǒng)方法,for因為您所做的太具體了。而且我也會避免嘗試合并單元格,因為這會使事情不必要地復雜化。這應該這樣做:
var data = saaOperators
.Where(t => t.Identifier.StartsWith(worksheet.Name) || (t.Identifier.StartsWith("W") && worksheet.Name.Equals("BIR")))
.OrderBy(x => x.Identifier)
.ToList();
var r = 2;
worksheet.Cells[r, 1].Value = "Identifier";
worksheet.Cells[r, 2].Value = "Name";
worksheet.Cells[r, 3].Value = "Profile";
worksheet.Cells[r, 4].Value = "Unit";
r++;
for (var i = 0; i < data.Count; i++)
{
var op = data[i];
worksheet.Cells[r + i, 1].Value = op.Identifier;
worksheet.Cells[r + i, 2].Value = op.Name;
worksheet.Cells[r + i, 3].Value = op.Profile;
if (!op.Units.Any())
continue;
for (var j = 0; j < op.Units.Count; j++)
worksheet.Cells[r + i + j, 4].Value = op.Units[j];
r += op.Units.Count - 1;
}

TA貢獻1982條經(jīng)驗 獲得超2個贊
這是一種方法:
給定一個List<SaaOperator>或其他IEnumerable<SaaOperator>:
foreach (var saaOperator in saaOperators)
{
string[] valuesToDisplay;
for (var x = 0; x < saaOperator.Units.Count; x++)
{
if (x == 0) // show all the properties
valuesToDisplay = new[]
{saaOperator.Identifier,
saaOperator.Name,
saaOperator.Profile,
saaOperator.Units[x]};
else // after the first unit, don't repeat the other properties
valuesToDisplay = new[]
{"", "", "", saaOperator.Units[x]};
}
}
換一種說法,
遍歷列表中的所有項目
對于每個項目,遍歷
Units
列表中的所有值。如果它是第一項,則顯示所有屬性。如果不是第一項,則只顯示單位。
- 2 回答
- 0 關注
- 154 瀏覽
添加回答
舉報