C# 如何将数据表值分配给变量

C# 如何将数据表值分配给变量,c#,linq,datatable,lambda,C#,Linq,Datatable,Lambda,在我的Sp中,它始终只返回一条记录。我需要将每列的值分离为单独的变量。我做了如下(我的c#的一部分) 上面的代码运行良好。我也试过如下方法 string accNo = nonProvidedServices.Tables[0].AsEnumerable().Select(row => row.Field<string>("AccountNumber")).ToString(); string accNo=nonProvidedServices.Tables[0].AsEnu

在我的Sp中,它始终只返回一条记录。我需要将每列的值分离为单独的变量。我做了如下(我的c#的一部分)

上面的代码运行良好。我也试过如下方法

string accNo = nonProvidedServices.Tables[0].AsEnumerable().Select(row => row.Field<string>("AccountNumber")).ToString();
string accNo=nonProvidedServices.Tables[0].AsEnumerable().Select(row=>row.Field(“AccountNumber”).ToString();

但它不能正常工作。将
datatable
列值分配给字符串变量的最佳有效方法是什么?Linq查询是否比我的工作代码更高效?

首先,如果它只返回一条记录,为什么要填充数据集呢?没有必要这样做
var accNo=nonProvidedServices.Tables[0].Rows.Cast().FirstOrDefault()?.Field(“AccountNumber”)
var accNo=nonProvidedServices.Tables[0].AsEnumerable().FirstOrDefault()?.Field(“AccountNumber”)此路径的效率稍高。您的答案或此(
Convert.ToString(sampleDataTable.Tables[0].Rows[0][“AccountNumber”]);
的最佳方式是什么(
转换.ToString(sampleDataTable.Tables[0];
)不是关于
最佳方式的问题,如果它有效,它就有效,对吗?TBH,这里实际上没有任何性能问题,只需使用您想要的;做某事的方法不止一种。另一方面,如果您选择使用您的方式,它可能会失败,因为行不存在,转换也会失败。这是因为您给它的类型是非空的,所以请尝试
nonProvidedServices.Tables[0].AsEnumerable().FirstOrDefault()?.Field(“id”)
注意
.Field
中的
,这意味着它可以为null,并且需要为null类型。正如你所看到的,它也可能不同,这与你在问题中发布的不同。。。
string accNo = nonProvidedServices.Tables[0].AsEnumerable().Select(row => row.Field<string>("AccountNumber")).ToString();