Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ结果到C#中的数据集:无法将AnonymousType强制转换到数据集_C#_Linq_Dataset - Fatal编程技术网

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.DataQuery
1[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?