Asp.net mvc 2 LINQ到实体-优化查询

Asp.net mvc 2 LINQ到实体-优化查询,asp.net-mvc-2,select,c#-4.0,linq-to-entities,Asp.net Mvc 2,Select,C# 4.0,Linq To Entities,我在尝试细化/重构LINQ到实体查询时遇到了一些问题。以下是我目前拥有的: public List<Article> LastFive() { return _siteDB.Articles.OrderByDescending(a => a.LastModified).Take(5).ToList(); } public List LastFive() { return _siteDB.Articles.OrderByDescending(a=>a.LastModif

我在尝试细化/重构LINQ到实体查询时遇到了一些问题。以下是我目前拥有的:

public List<Article> LastFive()
{
    return _siteDB.Articles.OrderByDescending(a => a.LastModified).Take(5).ToList();
}
public List LastFive()
{
return _siteDB.Articles.OrderByDescending(a=>a.LastModified).Take(5.ToList();
}

我想做的是,与其返回五篇最新文章的列表,我只想得到五篇最新文章的标题和ID。如果可能的话,我希望保持方法链接的完整性(从样式的角度来看,我很喜欢),但我不确定使用方法链接的
Select()
应该放什么。我也不确定将什么作为我的方法的返回值,因为我不会返回完整的文章实体,而只返回其中选定的属性<代码>列表?

最好创建一个类型化类:

public class ArticlePreview
{
    public int ID {get;set;}
    public string Title {get;set;}
}
然后:


您可能应该返回一个实际类的列表,但该类只包含您需要的属性

public class ArticleTitle
{
    public string Title { get; set; }
    public int ID { get; set; }
}
使您的查询变成:

public List<ArticleTitle> LastFive()
{
    return _siteDB.Articles.OrderByDescending( a => a.LastModified )
                           .Select( a => new ArticleTitle
                            {
                                 Title = a.Title,
                                 ID = a.ID,
                            })
                           .Take( 5 )
                           .ToList();
}
public List LastFive()
{
return\u siteDB.Articles.OrderByDescending(a=>a.LastModified)
.选择(a=>新文章标题
{
头衔,头衔,
ID=a.ID,
})
.采取(5)
.ToList();
}
var articlePreviews = LastFive(a => new { a.Title, a.ID });
//articlePreviews[0].Title
//articlePreviews[0].ID
public class ArticleTitle
{
    public string Title { get; set; }
    public int ID { get; set; }
}
public List<ArticleTitle> LastFive()
{
    return _siteDB.Articles.OrderByDescending( a => a.LastModified )
                           .Select( a => new ArticleTitle
                            {
                                 Title = a.Title,
                                 ID = a.ID,
                            })
                           .Take( 5 )
                           .ToList();
}