出现格式错误,无法将 system.double 转换为 system.string
Getting a format error, cannot convert system.double to system.string
问题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。所以我希望子字符串在状态之后直到行尾。即分配 (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
这就是我所期待的,这就是我得到的。
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];
您可以使用 Split
两次:
- 用
\n
得到Status: Assigned (1)
和Assigned Group: Jitesh - QWERTY
,然后
- 与
:
和 trim 的值。
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();
问题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。所以我希望子字符串在状态之后直到行尾。即分配 (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
这就是我所期待的,这就是我得到的。
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];
您可以使用 Split
两次:
- 用
\n
得到Status: Assigned (1)
和Assigned Group: Jitesh - QWERTY
,然后 - 与
:
和 trim 的值。
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();