我的模特
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
我不明白为什么。
答案 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)})
}