如何将linq查询转换为IEnumerable模块类的对象?

时间:2015-02-12 16:56:18

标签: c# sql linq

我正在使用如下所示的linq查询

var result = from posts in repository.JobPosts
                      orderby posts.PostDate descending
                       select posts;

我有一个属性类JobPost具有相同的列名和列数,就像上面查询中的表一样。我使用JobPost类的方法创建了另一个模块类,如下所示

 public class MainPageModel
 {
        public IEnumerable<JobPost> jobPost { get; set; }
        public SearchTerms searchTerms { get; set; }
 }

我的JobPost是另一个模块/ propery类,其行数与上面的JobPosts表相同。我正在尝试将我的查询结果直接转换到我的模块,因为两者都是相同的列。我将查询修改为

IEnumerable<JobPost> res =(IEnumerable<JobPost>)
                           (from posts in repository.JobPosts
                            orderby posts.PostDate descending
                            select posts) ;

我上面的linq返回了行问题

SELECT 
    *
    FROM [dbo].[JobPosts] AS [Extent1]
    ORDER BY [Extent1].[Id] ASC

有什么方法可以返回我的查询结果(即行)并将它们转换为我的IEnumerable类,因为它们是相同的列。

任何帮助都将不胜感激。

修改

我打算用下面的结果查询来填充我的课程。

 MainPageModel model = new MainPageModel
        {
            jobPost = res,
            searchTerms = search
        };

2 个答案:

答案 0 :(得分:3)

仅仅因为它们具有相同的属性,并不意味着你可以从一个属性转换为另一个属性。至少,您必须明确地映射这些属性:

IEnumerable<JobPost> res =(IEnumerable<JobPost>)
                       (from posts in repository.JobPosts
                        orderby posts.PostDate descending
                        select new JobPost{
                           Field1 = posts.Field1,
                           Field2 = posts.Field2,
                        }) ;

您也可以查看AutoMapper,因为它简化了(有一些开销!)这类任务

答案 1 :(得分:0)

您可以使用ExecuteQuery直接查询数据库:

IEnumerable<JobPost> res = repository.ExecuteQuery<JobPost>("SELECT * FROM JobPosts ORDER BY Id");