2011-11-28 58 views
2

我要嘗試儘可能簡化這個詞,因爲我的問題相當複雜(或者我認爲!!!)。在C中的變量內部的字符串分裂#

目前我有一個與中繼器相關的變量,它列出了業務中各個員工的一組配置文件。

在變量中,我有一個字段「Job_Title」,它包含他們工作的扇區和工作標題以'/'分隔。我試圖實現的是根據「Job_Title」字符串中的扇區分配一組DIV類。

現在我可以通過以下操作

DT_Control_Profile Pro = 
    db.DT_Control_Profiles 
     .SingleOrDefault(x => x.PageControlID == PageControl_ID); 

if (Pro != null) 
{ 

    String[] cutsector = Pro.Job_Title.Split('/'); 
    foreach (string s in cutsector) 
    { 
     if (s.Trim().ToUpper() == "WELL ENGINEERING") 
     { 
      DIV_SECOTR.Attributes.Add("class", "sectorcon conwelleng"); 
     } 
     else if (s.Trim().ToUpper() == "RESEVOIR ENGINEERING") 
     { 
      DIV_SECOTR.Attributes.Add("class", "sectorcon conreseng"); 
     } 
     else if (s.Trim().ToUpper() == "GEO SCIENCES") 
     { 
      DIV_SECOTR.Attributes.Add("class", "sectorcon congeoscie"); 
     } 
     else if (s.Trim().ToUpper() == "FACILITES ENGINEERING") 
     { 
      DIV_SECOTR.Attributes.Add("class", "sectorcon confacilieng"); 
     } 
    }; 

但是我很努力變戲法實現這一使用變量,從而牽引多個配置文件到頁面上的方式對一個配置文件實現這一目標!

到目前爲止,我有這樣的:

var leaders = from x in db.DT_Control_Profiles 
       where x.FeatureProfile == true 
       && x.DT_PageControl.DT_SitePage.VennID == codesnippets.VennID 
       select new 
       { 
        img = Path + x.ImageUrl, 
        x.Job_Title, 
        x.Name, 
        about = codesnippets.StringSize(x.Biography, 100), 
        link = "~/" + x.DT_PageControl.DT_SitePage.PageName, 
       }; 

我認爲,解決辦法在於foreach循環,但我不知道從哪裏開始!

任何人都可以指出我在正確的方向?

回答

1

你應該可以在你的linq查詢中調用一個函數。創建這樣的函數:

public static string GetHtmlClass(DT_Control_Profile Pro) 
{ 
    String result = ""; 
    String[] cutsector = Pro.Job_Title.Split('/'); 
    foreach (string s in cutsector) 
    { 
     if (s.Trim().ToUpper() == "WELL ENGINEERING") 
     { 
      result += "sectorcon conwelleng "; 
     } 
     else if (s.Trim().ToUpper() == "RESEVOIR ENGINEERING") 
     { 
      result += "sectorcon conreseng "; 
     } 
     else if (s.Trim().ToUpper() == "GEO SCIENCES") 
     { 
      result += "sectorcon congeoscie "; 
     } 
     else if (s.Trim().ToUpper() == "FACILITES ENGINEERING") 
     { 
      result += "sectorcon confacilieng "; 
     } 
    } 
} 

後,您的查詢應該像這樣工作:

var leaders = from x in db.DT_Control_Profiles 
       where x.FeatureProfile == true 
       && x.DT_PageControl.DT_SitePage.VennID == codesnippets.VennID 
       select new 
       { 
        img = Path + x.ImageUrl, 
        x.Job_Title, 
        x.Name, 
        about = codesnippets.StringSize(x.Biography, 100), 
        link = "~/" + x.DT_PageControl.DT_SitePage.PageName, 
        class = GetHtmlClass(x) 
       }; 

這應該讓你在查詢結果中的類權。

0

對於初學者,我會把你的扇區 - >類映射關鍵值對字典http://msdn.microsoft.com/en-us/library/xfhwa508.aspx 這只是一個更乾淨和更好的方式做同樣的事情。

我不確定你試圖存儲類屬性的位置,你可以通過領導者集合中的foreach運行並從字典中查找並附加它,或者可以在顯示點查找。

編輯:由於AVee說你可以在你的linq語句中查找,如果你只希望職位名稱與部門一起顯示,只選擇div類我可能會去。