LINQ结果到C#中的数据集:无法将AnonymousType强制转换到数据集
我想获取结果并将其转换为LINQ结果到C#中的数据集:无法将AnonymousType强制转换到数据集,c#,linq,dataset,C#,Linq,Dataset,我想获取结果并将其转换为数据集。我的代码是: var res = from i in dbconnect.tblManageDates where i.internationalCode == _international select new { i.companyId, i.endDate, i.startDate, i.dateId }; _result = (DataSet)res
数据集
。我的代码是:
var res =
from i in dbconnect.tblManageDates
where i.internationalCode == _international
select new
{
i.companyId,
i.endDate,
i.startDate,
i.dateId
};
_result = (DataSet)res;
当我将其提取到数据集时
会出现以下错误:
无法强制转换类型为的对象
'System.Data.Linq.DataQuery1[f_uAnonymousType0
4[System.String,System.String,System.String,System.Int32]'
键入“System.Data.DataSet”
尝试使用这样的扩展:
public static class Extesions
{
public static DataSet ToDataSet<T>(this IList<T> list)
{
Type elementType = typeof(T);
DataSet ds = new DataSet();
DataTable t = new DataTable();
ds.Tables.Add(t);
//add a column to table for each public property on T
foreach (var propInfo in elementType.GetProperties())
{
Type ColType = Nullable.GetUnderlyingType(propInfo.PropertyType) ?? propInfo.PropertyType;
t.Columns.Add(propInfo.Name, ColType);
}
//go through each property on T and add each value to the table
foreach (T item in list)
{
DataRow row = t.NewRow();
foreach (var propInfo in elementType.GetProperties())
{
row[propInfo.Name] = propInfo.GetValue(item, null) ?? DBNull.Value;
}
t.Rows.Add(row);
}
return ds;
}
}
公共静态类扩展
{
公共静态数据集ToDataSet(此IList列表)
{
类型元素类型=类型(T);
数据集ds=新数据集();
DataTable t=新的DataTable();
ds.表格.加入(t);;
//为T上的每个公共属性向表中添加一列
foreach(elementType.GetProperties()中的var propInfo)
{
Type ColType=Nullable.GetUnderlineType(propInfo.PropertyType)??propInfo.PropertyType;
t、 Columns.Add(propInfo.Name,ColType);
}
//检查T上的每个属性,并将每个值添加到表中
foreach(列表中的T项)
{
DataRow row=t.NewRow();
foreach(elementType.GetProperties()中的var propInfo)
{
行[propInfo.Name]=propInfo.GetValue(项,空)??DBNull.Value;
}
t、 行。添加(行);
}
返回ds;
}
}
用法:
public class Entity
{
public int CompanyId { get; set; }
public DateTime EndDate { get; set; }
public DateTime StartDate { get; set; }
public int DateId { get; set; }
}
// ...
List<Entity> res = dbconnect.tblManageDates.Where(i => i.internationalCode == _international).Select(i => new Entity
{
CompanyId = i.companyId,
EndDate = i.endDate,
StartDate = i.startDate,
DateId = i.dateId
}).ToList();
DataSet dataSet = res.ToDataSet();
公共类实体
{
public int CompanyId{get;set;}
公共日期时间结束日期{get;set;}
公共日期时间起始日期{get;set;}
public int DateId{get;set;}
}
// ...
列出res=dbconnect.tblManageDates.Where(i=>i.internationalCode==\u international)。选择(i=>newentity
{
CompanyId=i.CompanyId,
EndDate=i.EndDate,
StartDate=i.StartDate,
DateId=i.DateId
}).ToList();
DataSet数据集=res.ToDataSet();
作为最终结果的数据集的目的是什么?查询将直接绑定到几个控件DataGridView
,DataGrid
,ListView
,等等(取决于平台)。\u结果是一个数据集,我想将其作为DataGridView的数据源返回。Datasource
属性不接受Dataset
作为绑定,它将使用DataTable
,List
,IEnumberable
等。。。您是否尝试将查询绑定到DGV?