2017-03-16 46 views
-1

将单个单元格(数据表只有一行和一列)的DataTable转换为“String”的任何LINQ查询。将仅有一个单元格的DataTable转换为字符串

DataTable like this 
| Name | 
----------- 
| Alice | 

如果已经有一种方法可以做到这一点,那将会很棒。谢谢

+2

我不认为LINQ的是正确的在这里回答。如果你确定DataTable至少有一行和一列,那么'dt.Rows [0] [0] .ToString()'将检索它。如果此特定查询只返回一个值,请考虑在您的DbCommand上使用ExecuteScalar(),而不要设置DataTable。 – KeithS

+2

Linq肯定是错误的方法,'ExecuteScalar'被设计为只有一个值,'.ToString()'将一个对象转换为一个字符串。如果你已经有了数据表并且不能改变为标量,你可以访问'Rows [0] [0]'第一行(唯一)中的第一个(唯一)列并从中获取字符串。 – Andrew

回答

2

为什么LINQ?

string firstName = table.Rows[0].Field<string>("Name"); // or Field<string>(0) 

如果一定要LINQ:

string firstName = table.AsEnumerable().First().Field<string>("Name"); 

如果你只从数据库中选择一个字段,你最好不要使用DataTable

using(var con = new SqlConnection("connectring")) 
using(var cmd = new SqlCommand("SELECT Name FROM Table WHERE Id = @Id", con)) 
{ 
    cmd.Parameters.Add("@Id", SqlDbType.Int).Value = 1234; 
    con.Open(); 
    string name = (string) cmd.ExecuteScalar(); 
} 
相关问题