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);