当前位置: 首页 > 编程语言 > C#

Linqtosql将IQueryable转为Dataset分享

时间:2023-04-11 02:54:27 C#

Linqtosql将IQueryable转为Dataset将IQueryable对象转为Dataset最简单的方法是什么?modelshredder正是您所需要的。如果您有数据上下文并且不需要模型的数据,nitzmahone的解决方案是明智的(如果它适合您的设置,我不知道)(yourDatacontext).GetCommand(yourIQueryableHere),将命令文本传递给DbCommand对象,调用ExecuteReader,将读取器传递给数据集的.Load方法。最简单的方法可能是编写一个包装IEnumerable的IDataReader实现(IQueryable是一个IEnumberable)。这是一个实现。然后你可以调用DataTable.Load(IDataReader)。如果您从与LINQtoSql匹配的模式创建数据表,我有一个扩展方法,它采用IQueryable并填充数据表:publicstaticDataTableAsDataTable(thisIQueryablevalue,DataTabletable){varreader=value.GetEnumerator();while(reader.MoveNext()){varrecord=(Customer)reader.Current;table.Rows.Add(record.CustomerID,record.City);}返回表;请注意,对Customer的转换是我的TEntity:[Table(Name="Customers")]publicclassCustomer{[Column(IsPrimaryKey=true)]publicstringCustomerID;[列]publicstringCity;}还有其他选项可以使用反射从Customer类构建DataTable。鉴于反射的性能,我选择使用以下方法来构建我的表:publicDataTableGetSchema(paramsstring[]columns){stringcol_list;如果(columns.Length==0)col_list="*";否则col_list=字符串。加入(”,“,列);returnProvider.QueryAsDataTable(string.Format("selecttop0{0}fromcustomers",col_list));将这些放在一起,我能够将结果推送到我的DataGridView:dgridRO.DataSource=newDataView(rows.AsDataTable(dmap.GetSchema("CustomerID","City")));**ID10TException:**我花了所有这些努力从IQueryable转换为DataTable,这样我就可以创建一个DataView作为DataGridView的源。好吧,我知道我现在不需要那样做。以上就是C#学习教程:LinqtosqlconvertsIQueryabletoDataset全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: