什么是一个IQueryable对象转换为数据集的最简单的方法?
Answer 1:
modelshredder有正是你需要的。 如果你有DataContext的周围,不需要你的模型也方面的数据,nitzmahone的解决方案是优良的性能明智的(如果你的设置,这是我不清楚匹配)
Answer 2:
(yourDatacontext).GetCommand(yourIQueryableHere),传递命令文本到DbCommand对象,调用ExecuteReaer,通过读取器数据集的方法.Load。
Answer 3:
最容易做的事情可能是写的IDataReader的实现,可包装器一个IEnumerable(IQueryable的是IEnumberable)。 有一个执行在这里 。 然后,你可以调用DataTable.Load(IDataReader的)。
Answer 4:
如果您创建架构的DataTable所以你的LINQ匹配SQL中,我有采取的IQueryable并填充数据表的扩展方法:
public static DataTable AsDataTable(this IQueryable value, DataTable table)
{
var reader = value.GetEnumerator();
while (reader.MoveNext())
{
var record = (Customer)reader.Current;
table.Rows.Add(record.CustomerID, record.City);
}
return table;
}
需要注意的是投给客户是我TEntity:
[Table(Name = "Customers")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public string CustomerID;
[Column]
public string City;
}
有迹象表明,使用反射来从Customer类建立自己的数据表中的其他选项。 由于从反射命中的表现,我选择使用下面的方法来建立我的表:
public DataTable GetSchema(params string[] columns)
{
string col_list;
if (columns.Length == 0)
col_list = "*";
else
col_list = String.Join(", ", columns);
return Provider.QueryAsDataTable(string.Format("select top 0 {0} from customers", col_list));
}
把所有一起,我能结果推到我的DataGridView:
dgridRO.DataSource = new DataView(rows.AsDataTable(dmap.GetSchema("CustomerID", "City")));
**
ID10TException:
**我花了这一切的努力得到来自IQueryable的转换到数据表,这样我可以创建一个数据视图作为源到DataGridView。 嗯,我知道我没有必要做了。
文章来源: Linq to sql convert IQueryable to Dataset