2016-08-17 352 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

相关问题