获取格式错误,无法将system.double转换为system.string

时间:2016-08-17 10:18:22

标签: c# asp.net linq pie-chart

问题1# 执行下面的代码时,它给我一个格式错误。 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#得到答案 在Sting,LOG中,第一行包含Status,第二行包含Owned Group,第三行包含Assigned Group。所以我希望子字符串为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');

预期产出:
status =已分配(1)
status1 = Jitesh - QWERTY

电流输出:
status =已分配(
status1 = Jitesh - Q

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

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分: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