C# 使用LINQ在combox中显示数据集的表名

C# 使用LINQ在combox中显示数据集的表名,c#,.net,linq,C#,.net,Linq,我有一个数据集,其中包含多个数据表,我想获取表名并在组合框中显示它们。下面的代码运行良好,但如何在LINQ中转换此代码 foreach (DataTable dt in objDataset.Tables) { cboTables.Items.Add(dt.TableName); } 这里的objDataset是DataSet,“cboTables”是WPF的组合框,可能就是这样。试试看 objDataset.Tables.ToList<DataTable>

我有一个
数据集
,其中包含多个
数据表
,我想获取表名并在组合框中显示它们。下面的代码运行良好,但如何在
LINQ
中转换此代码

foreach (DataTable dt in objDataset.Tables)
  {
    cboTables.Items.Add(dt.TableName);
  }    

这里的
objDataset
DataSet
,“cboTables”是WPF的
组合框
,可能就是这样。试试看

objDataset.Tables.ToList<DataTable>().ForEach( dt => { cboTables.Items.Add(dt.TableName) });
objDataset.Tables.ToList().ForEach(dt=>{cboTables.Items.Add(dt.TableName)});

这里有一种使用
ForEach
的方法,但我不建议仅在使用LINQ时使用它,因为您必须使用
ToList
转换您的收藏:

objDataset.Tables.ToList().ForEach(t => cboTables.Items.Add(t.TableName));

为什么要使用foreach呢?只需选择并将其设置为组合框的ItemsSource


cboTables.ItemsSource=objDataSet.Tables.OfType().Select(dt=>dt.TableName)

cboTables.Items.AddRange(objDataset.Tables.Cast().Select(iter=>iter.TableName));
试试这个:

 cboTables.ItemsSource = objDataset.Tables.OfType<DataTable>().Select(dt => dt.TableName); 

cboTables.ItemsSource=objDataset.Tables.OfType().Select(dt=>dt.TableName);

老实说,无论是否使用LINQ,它都接近相同的代码。您不会节省任何时间。您使用的是.Net的哪个版本?错误2“System.Data.DataTableCollection”不包含“ForEach”的定义,并且找不到接受“System.Data.DataTableCollection”类型的第一个参数的扩展方法“ForEach”(是否缺少using指令或程序集引用?)D:path………@user1523935——那么您可能需要在.Tables之后使用.ToList()——我面前没有它,否则我可以为您测试。致以最诚挚的问候。错误2'System.Data.DataTableCollection'不包含'ToList'的定义,并且找不到接受'System.Data.DataTableCollection'类型的第一个参数的扩展方法'ToList'(是否缺少using指令或程序集引用?@user1523935--我正在查看它--工作正常)。你有使用系统吗;在声明中?是的,错误2“System.Data.DataTableCollection”不包含“ToList”的定义,并且找不到接受“System.Data.DataTableCollection”类型的第一个参数的扩展方法“ToList”(是否缺少using指令或程序集引用?)错误2“System.Data.DataTableCollection”不包含“Select”的定义,并且找不到接受“System.Data.DataTableCollection”类型的第一个参数的扩展方法“Select”(是否缺少using指令或程序集引用?)D:path……….是否为System.Linq添加了using语句?cboTables.ItemsSource=objDataSet.Tables.OfType().Select(dt=>dt.TableName);错误2“System.Data.DataTableCollection”不包含“ForEach”的定义,并且找不到接受“System.Data.DataTableCollection”类型的第一个参数的扩展方法“ForEach”(是否缺少using指令或程序集引用?)D:\Pathtry ToList before for EaherRor 2'System.Windows.Controls.ItemCollection'不包含'AddRange'的定义,并且在使用IEnumerable.Cast时找不到接受'System.Windows.Controls.ItemCollection'类型的第一个参数的扩展方法'AddRange',它将ICollection转换为IEnumerable。所以你永远不会有这个问题。我认为您缺少了一些引用或使用了旧的.net框架。
 cboTables.ItemsSource = objDataset.Tables.OfType<DataTable>().Select(dt => dt.TableName);