2012-10-29 56 views
2

這裏填充這些性能的最佳方式是什麼樣的代碼可能看起來像是從型號什麼是聲明與屬性的類,並在同一時間

public static class SomeClass 
{ 
    // Description 
    public const string String1 = "String One" 
    public const string String2 = "String Two"; 
    public const string String3 = " String Three"; 
    public const string String4 = " String Four"; 

    // Position 
    public const int String1Position = 0; 
    public const int String2Position = 1; 
    public const int String3Position = 2; 
    public const int String4Position = 3; 

    // Filter Ranges 
    public const int String2Minimum = 0100; 
    public const int String2Maximum = 0199; 

    public const int String3Minimum = 1000; 
    public const int String3Maximum = 1099; 

    public const int String4Unknown = 9999; 

    private class SomeClassData 
    { 
     public string Description { get; set; } 
     public int Position { get; set; } 
     public int FilterMinimum { get; set; } 
     public int FilterMaximum { get; set; } 
    } 
} 

我希望能夠以填充一個例子這個類的屬性對於描述,位置和過濾器都相互關聯的每個不同的描述,位置和過濾器範圍。

SomeClassData.Description = "String Two"; 
SomeClassData.Position = 1; 
SomeClassData.String2Minimum = 0100; 
SomeClassData.String2Maximum = 0199; 

凡說明和位置被用於控制器中,以便能夠給查看填充使用Javascript/JQuery的一個下拉框的屬性。 控制器將使用過濾器範圍來接受下拉框中的位置值作爲ActionResult的參數,以生成linq查詢以從數據庫中獲取數據。

我開始認爲最好的辦法是爲每種不同類型填充一個列表,然後將每個列表一起使用,但隨後嘗試將列表正確鏈接在一起會變得混亂。 我有這種感覺,我可能需要使用Dictionary<string, object>Dictionary<int, object>其中的對象是SomeClassData填充。不確定在這一點上我是否還沒有做到這一點。

回答

2

是的,你可以使用Dictionary<string,SomeClassData>

var col = Dictionary<string, SomeClassData> 
{ 
    { "Desc1", new SomeClassData{Position =1, String2Minimum =0100, String2Maximum = 0199}}, 
    { "Desc2", new SomeClassData{Position =1, String2Minimum =0100, String2Maximum = 0199}}, 
    .... 
}; 

SelectLinq operator

var fix = from entry in col 
      where entry.Key == "Desc1" 
      select new entry.Value; 
+0

感謝。正是我在找什麼。 – iamchrisfryer

+0

我很高興幫助你iamchrisfryer –

0

您必須創建一個名爲SomeClassData的班級列表。每個元素將有相應的一組值。