在c#中将两个表连接结果分配给List

时间:2015-04-22 19:02:58

标签: c# linq entity-framework-4

我想将两个表的结果返回到列表中。

public List<dynamic> GetStatistics(DateTime startDate , DateTime endDate)
{
    try
    {
        List<dynamic> result = new List<dynamic>();

        using (XactETLEntities xactCtxt = new XactETLEntities())
        {
            var query = (from a in xactCtxt.XactETL_Activity_Log
                     join b in xactCtxt.XactETL_Shred_Mode on a.ShredModeID 
                                                         equals b.ShredModeID
                    where a.CreatedDate >= startDate && a.CreatedDate <= endDate
                    select new { a, b });

            result = query.ToList();
        }
    }

我无法将结果分配给query.ToList()

1 个答案:

答案 0 :(得分:0)

问题是查询不是IEnumerable,因此ToList()函数没有返回正确的列表类型。此外,匿名类型不能转换为除对象之外的任何内容,而且是内部的。您最好的选择是尝试使您的选择更明确。

而不是:

select new { a, b });

你可以使用:

select (dynamic)new Tuple<DateTime, DateTime>(a, b)

这将导致您的查询返回动态的IEnumerable,其中每个项目实际上都是下面的元组。

修改 解决方案是在转换为列表之前让查询将所有项目转换为对象。

query.Select(o => (object)o).ToList();