仅从集合中获取一些元素

时间:2015-08-04 23:41:53

标签: c# linq-to-entities entity-framework-6

我的模特

class A
{
    public string Name {get;set;}
    public List<B> Otros {get;set;}
}

class B 
{
    public string At1{get;set;}
    pùblic string At2{get;set;}
}

在我的存储库中,我尝试获取A对象的集合,但只有一些B对象(按条件过滤),......但是不起作用。

这是我的存储库的代码(我使用来自通用存储库的Find方法,第一个arg。是where子句,第二个是(params)包含的数组):

return Find(ar => ar.Name == name, // Where
       ar => ar.Otros.Where(oaa => oaa.At1 == at1)); // Include

但如果我更改了上面的

 return Find(ar => ar.Name == name,// Where
           ar => ar.Otros); // Include

它有效,但是我的目标不是获得集合中的所有元素。

请任何人解释我如何只获得具有特定值的At1的集合元素?

新信息:

当我编写以下方法时

public IQueryable<AlumnoRegistrado> GetA(string name, string at1)
        {
            return Find(ar => ar.Name == name).Select(ar => new {A = ar, SomeOfB = ar.Otros.Where(oaa => oaa.At1 == at1)})

        }

我得到以下错误:

  

错误1 No se puedeconvertirmplícitamenteeltipo    'System.Linq.IQueryable'en    'System.Linq.IQueryable'。 Ya existeunacontraión    explícita(compruebe si le faltaunacontraión)    C:\ Users \ jmolina \ Source \ Workspaces \ yyy \ Dev \ Src \ XXX.yyy.Data.EntityFramework.Repositories \ A \ ARepository.cs 31 17 XXX.yyy.Data.EntityFramework.Repositories

我不明白为什么。

1 个答案:

答案 0 :(得分:0)

您只需要返回IQueryable的方法,并引入新的结果类来选择数据:

class Result
{
    public A ValueA {get;set;}
    public IEnumerable<B> ValuesB {get;set;}
}

public IQueryable<Result> GetA(string name, string at1)
{
    return Find(ar => ar.Name == name).Select(ar => new Result{ValueA = ar, ValuesB = ar.Otros.Where(oaa => oaa.At1 == at1)})
}