DataTable data;data.AsEnumerable().Select(row => row["Factory"]).Distinct().ToArray()
这个结果到底是什么类型?虽然用 Object[] 也能用,但想弄清楚。
我用转成 String[] 和 DataRow[] 都抛异常。row["Factory"] 照理说返回的是 Factory 列的数据类型,但我的就是 string 。
Select() 返回的也就是 IEnumerable<string> ,再 Distinct() 不变。
再 ToArray() 返回的应该就是 string[] 了。
但事实是执行 (string[])(data...); 时会抛出异常,无法将 Object[] 转换。
这个结果到底是什么类型?虽然用 Object[] 也能用,但想弄清楚。
我用转成 String[] 和 DataRow[] 都抛异常。row["Factory"] 照理说返回的是 Factory 列的数据类型,但我的就是 string 。
Select() 返回的也就是 IEnumerable<string> ,再 Distinct() 不变。
再 ToArray() 返回的应该就是 string[] 了。
但事实是执行 (string[])(data...); 时会抛出异常,无法将 Object[] 转换。
还是转成实体类把 字符串什么的 最讨厌的啦object[] = data.AsEnumerable().Select(row => row["Factory"]).Distinct().ToArray();Type t = object[0].GetType();
t 就是真实类型
接着传给 Select() 的 TSource 自然也是 DdtaRow 。
row => row["Factory"] 中 row 当然也是 DataRow 。
然后
(data.AsEnumerable().Select(row => row["Factory"]).Distinct().ToArray())[0].GetType()
// 是 String 没错。
(data.AsEnumerable().Select(row => row["Factory"]).Distinct().ToArray()).GetType()
// 却是 Object[] 且不能强制转化为 String[] 。
逐个元素转
.Select(row => (string)row["Factory"])