仅从集合中获取部分元素

本文关键字:元素 获取部 集合 | 更新日期: 2023-09-27 18:06:18

我的模型

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方法,第一个参数。是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 puede converter implícitamente el tipo"来。这个IQueryable"在"System.Linq.IQueryable"。你存在于conversiónExplícita(编译自le falta una conversión)c:' users 'jmolina' source ' workspace 'yyy' dev ' src 'XXX.yyy.Data.EntityFramework.Repositories'A' areposiatory .cs 31 17 XXX.yyy.Data.EntityFramework.Repositories

我不明白为什么。

仅从集合中获取部分元素

您只需要返回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)})
}