簡體   English   中英

C# - 根據其他屬性的 SortOrder 動態創建占位符屬性

[英]C# - Create placeholder properties dynamically based on SortOrder of other properties

使用 C# 我想創建下表 output(見截圖),其中需要動態添加紅色背景的列。

Output: 例子

我收到基於以下 class 結構的屬性列表:

public class Attribute
{
    public string Name { get; set; }
    public int? Order { get; set; }
    public string Value { get; set; }
}

我努力解決的部分是為 output 創建“動態”占位符列/屬性。這些列需要根據現有屬性的Order 屬性創建以填補空白,這樣 output 的結構就不會改變。

實際/現有屬性的名稱可以是 output 的通用名稱。

基於以下屏幕截圖的結構:

  • 你可以忽略 A 和 B 列,它們來自不同的 object
  • “Value1”列 == 訂單 4
  • “Value2”列 == 訂單 6

因為第一個現有屬性的順序為4 ,所以需要添加三列(從 1 開始)。 因為第二個屬性的階數為 6,所以需要在中間添加一列來填補空白。 列的 rest 應創建到預定義的列號。

我希望這是有道理的,如果沒有,請隨時詢問更多細節。 實際上結構更復雜,但它應該適用於這個簡化的例子。

謝謝您的意見。

要為所有訂單值生成占位符屬性,您可以這樣做:

var attributesByOrder = myAttributes.ToDictionary(a => a.Order, a => a);
var maxOrder = myAttributes.Max(a => a.Order);
var attributesAndPlaceholders = Enumerable.Range(1, maxOrder).Select(i => 
         attributesByOrder.TryGet(i, out var a) ? 
                    a : 
                    new Attribute{
                           Name ="PlaceHolder",
                           Order = i,
                           Value = ""
                           });

如果特定訂單值存在現有屬性,這將使用現有屬性,如果不存在,則生成占位符屬性。 這假定所有屬性都具有實際的訂單值,並且它們是唯一的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM