2016-08-17 41 views
-2

Question1# 執行下面的代碼時,它給了我一個格式錯誤。 System.double不能轉換成System.string。獲取格式錯誤,無法將system.double轉換爲system.string

var PiePriorityCount = dt.AsEnumerable() 
         .GroupBy(item => item.Field<string>("Priority")) 
         .Select(item => new { Priority = item.Key, TicketCount = item.Count() }); 


     dtPriorityCount.Columns.Add("Priority", typeof(string)); 
     dtPriorityCount.Columns.Add("Count", typeof(int)); 
     lblStatus.Visible = true; 
     foreach (var itm in PiePriorityCount) 
     { 
      //lblStatus.Text = "Z" + "->" + itm.TicketCount; 
      DataRow dr = dtPriorityCount.NewRow(); 
      dr["Priority"] = "P" + " " +itm.Priority; 
      dr["Count"] = itm.TicketCount; 
      dtPriorityCount.Rows.Add(dr); 
     } 

在執行上面的代碼它給我一個格式錯誤。 System.double不能轉換成System.string。

問題2#得到的答案 在斯汀,LOG,包含在第一行的現狀與第二行國有集團和第三組分配。所以我希望子字符串處於After狀態直到行尾。即分配(1)

它們可以按順序洗牌。沒有必要,第一個將是狀態,它可以是擁有組或分配組。

string LOG = "Status: Assigned (1) \n Owned Group: Jitesh - poiuyt \n Assigned Group: Jitesh - QWERTY"; 

string tb = "Status: "; 
string tb1 = "Assigned Group: "; 

int lenght = tb.Length; 
int a = LOG.IndexOf(tb) + lenght; 

int lenght1 = tb1.Length; 
int a1 = LOG.IndexOf(tb1) + lenght1; 

var status = LOG.Substring(a,'\n'); 
var status1 = LOG.Substring(a1, '\n'); 

預期輸出:
狀態=指派(1)
STATUS1 = Jitesh - QWERTY

電流輸出:
狀態=指派(
STATUS1 = Jitesh - Q

這是我所期待的,這就是我所得到的。

+0

考慮選擇一個更有意義的話題。 – C4u

+0

Did not got you? –

+0

這只是令人困惑。不能得到最後一句話。請展示如何在沒有任何評論的情況下輸出結果。你的評論和應該屬於輸出的部分之間有一點區別。 – C4u

回答

0

您可以使用Split兩次:

  • \n得到Status: Assigned (1)Assigned Group: Jitesh - QWERTY,然後
  • :和修剪值。

C# demo

var LOG = "Status: Assigned (1) \n Owned Group: Jitesh - poiuyt \n Assigned Group: Jitesh - QWERTY"; 
var res = LOG.Split('\n') 
    .Where(p => p.Trim().StartsWith("Status:") || p.Trim().StartsWith("Assigned Group:")) 
    .Select(n => n.Split(':').LastOrDefault().Trim()) 
    .ToList(); 

var status = res[0]; 
var status1 = res[1]; 

你將有2個值出現,首先是status,第二個是status1

另一種方式獲得2個變量,如果它們的順序可以是隨機的:

var status = LOG.Split('\n') 
    .Where(p => p.Trim().StartsWith("Status:")) 
    .Select(n => n.Split(':').LastOrDefault().Trim()) 
    .FirstOrDefault(); 
var status1 = LOG.Split('\n') 
    .Where(p => p.Trim().StartsWith("Assigned Group:")) 
    .Select(n => n.Split(':').LastOrDefault().Trim()) 
    .FirstOrDefault(); 

another demo

+1

感謝男人,它給出了輸出,但是我的嘗試方式有什麼問題,它只給出前10個字符 –

+0

有一個小的改變有問題,請查看它。 –

+0

我看到任務變得越來越複雜。你需要在'Status:'和'Assigned Group:'之後得到子字符串嗎?我在任何位置更新了答案,以解釋這兩個問題。 –

0
string LOG = "Status: Assigned (1) \n Assigned Group: Jitesh - QWERTY"; 

var split = LOG.Split('\n'); 
var status = split[0].Split(':')[1]; 
var status1 = split[1].Split(':')[1]; 
+0

沒有給出所需的輸出:( –

+0

現在試一試.... – sagivasan

相關問題