使用Repository模式和LINQ2Entities仅从实体获取一些属性

时间:2013-06-14 07:39:47

标签: c# linq-to-entities

我知道这是非常标准的东西,但是知道解决方案让我感到厌烦。我有实体Documents。在我的服务中,我可以调用DocumentsRepository.All(),然后只使用我需要的但我不想携带所有不需要的数据。我想我必须使用匿名对象来实现这一点,但确切的实现逃脱了我。

Documents实体中,我有列Id和列UserId。如何编写LINQ才能获得这两个值?

P.S

我的方法应该使用什么类型?也许object但我希望更具体一些。

2 个答案:

答案 0 :(得分:2)

基于olivers答案,如果你想从方法中返回,你可以使用dynamic:

    public dynamic ReturnSomeData()
    {
        return context.Documents.Select(d => new
        {
            Id = d.Id,
            UserId = d.UserId
        });
    }

您必须记住,您需要交换编译器检查的灵活性。

答案 1 :(得分:1)

这应该适用于你需要的东西,如果你想把它放到一个方法中,你应该创建一个包含你需要的所有信息的类型。

var selectedItems = context.Documents.Select(d => new
    {
        Id = d.Id,
        UserId = d.UserId
    });

修改

在方法中使用:

public class MyData
{
    public int Id { get; set; }
    public int UserId { get; set; }
}

public IEnumerable<MyData> GetMyDataFromDocuments()
{
    return context.Documents.Select(d => new MyData
        {
            Id = d.Id,
            UserId = d.UserId
        });
}