我有以下linq查询
foreach (var row in nodes.
Select(tr => tr.Elements("td")
.Select(td => td.InnerText.TrimEnd())
.ToArray()))
{
mydatatable.Rows.Add(row);
}
我可以根据其他数组缺点的值在linq语法中添加元素到关节计算,而不必再循环一次吗?
例如,结果数组看起来像["xx","9.4",1.4"]
,我试图添加另一个元素,例如第二个元素乘以第三个元素,所以它看起来像["xx","9.4","2","18.8"]
并且肯定是在字符串格式中,所以需要强制转换为double然后再乘以然后再转换为字符串
答案 0 :(得分:1)
在这种情况下你不需要数组。考虑IList<T>
并在LINQ
之外进行这些计算,以获得性能,可读性和访问权限。
IList<int> rows = nodes.Select(tr => tr.Elements("td")).Select(td => Convert.ToInt32( td.InnerText.TrimEnd())).ToList();
rows.Add(rows[1] * rows[2]);
注意:我知道你可能没有整数,为了示例代码的目的,我不能使用它。
IList<string> strs = nodes.Select(tr => tr.Elements("td")).Select(td => td.InnerText.TrimEnd()).ToList();
var ints = strs.Select(str => str.TryGetInt()).Where(i => i.HasValue).Select(i => i.Value);
strs.Add((ints[0] * [ints[1]).ToString());
public static class Extensions
{
public static int? TryGetInt(this string item)
{
int i;
bool success = int.TryParse(item, out i);
return success ? (int?)i : (int?)null;
}
}