string sql = string.Format(@"SELECT DISTINCT TenantId , TenantName FROM {0} ORDER BY TenantId",biao); var list = _sqlSugarClient.Ado.GetDataTable(sql);的list转换string集合
时间: 2023-12-14 18:40:06 浏览: 149
可以使用 LINQ 将 DataTable 转换为 List<string>,示例代码如下:
```
string sql = string.Format(@"SELECT DISTINCT TenantId, TenantName FROM {0} ORDER BY TenantId", biao);
var dataTable = _sqlSugarClient.Ado.GetDataTable(sql);
var list = dataTable.AsEnumerable()
.Select(row => $"{row["TenantId"]},{row["TenantName"]}")
.ToList();
```
上述代码中,使用了 `AsEnumerable()` 将 DataTable 转换为可枚举类型,然后使用 `Select()` 函数将每行数据转换为一个字符串,并最终使用 `ToList()` 将结果转换为 List<string> 类型。其中,`$"{row["TenantId"]},{row["TenantName"]}"` 是 C# 6.0 中新增的字符串插值语法,可以更方便地拼接字符串。
相关问题
string sql = string.Format(@"SELECT DISTINCT TenantId , TenantName FROM {0} ORDER BY TenantId",biao); var list = _sqlSugarClient.Ado.GetDataTable(sql);转换string集合
假设你想要转换的是 DataTable 的 TenantName 列,可以使用 LINQ 查询和 Select 方法来实现:
```
var stringList = list.AsEnumerable().Select(row => row.Field<string>("TenantName")).ToList();
```
这个代码将会遍历 DataTable 中的每一行,然后将每行的 TenantName 值转换为一个 string 类型,并将所有的 string 值保存到一个 List<string> 中。
string sql = string.Format(@"SELECT DISTINCT TenantId , TenantName FROM {0} ORDER BY TenantId", biao); var dataTable = _sqlSugarClient.Ado.GetDataTable(sql); // 将 DataTable 转换为 List<string> List<string> stringList = dataTable.AsEnumerable().Select(row => row.Field<string>(0) + "|" + row.Field<string>(1)).ToList(); // 将 List 分别赋值给 key 和 value 字段 List<KeyValue> keyValueList = new List<KeyValue>(); foreach (string str in stringList) { string[] strArray = str.Split('|'); KeyValue keyValue = new KeyValue(); keyValue.key = strArray[0]; keyValue.value = strArray[1]; keyValueList.Add(keyValue); }报错System.InvalidCastException:“Unable to cast object of type 'System.Int64' to type 'System.Int32'.”
这个错误是因为您在使用 `row.Field<string>(0)` 时,`0` 应该是 `Int32` 类型的,但是实际上返回的类型是 `Int64`,因此无法转换成 `Int32` 类型。您可以尝试在 `Select` 语句中将返回的列转换成 `Int32` 类型,例如:
```
string sql = string.Format(@"SELECT DISTINCT CONVERT(INT, TenantId) AS TenantId, TenantName FROM {0} ORDER BY TenantId", biao);
var dataTable = _sqlSugarClient.Ado.GetDataTable(sql);
List<string> stringList = dataTable.AsEnumerable().Select(row => row.Field<string>(0) + "|" + row.Field<string>(1)).ToList();
List<KeyValue> keyValueList = new List<KeyValue>();
foreach (string str in stringList)
{
string[] strArray = str.Split('|');
KeyValue keyValue = new KeyValue();
keyValue.key = strArray[0];
keyValue.value = strArray[1];
keyValueList.Add(keyValue);
}
```
这里使用了 `CONVERT(INT, TenantId)` 将返回的 `TenantId` 列转换成 `Int32` 类型。
阅读全文