【发布时间】:2015-01-09 16:06:00
【问题描述】:
我的控制器上有这个 Linq 查询,它将给我一个 List 中的对象,我需要将此对象传递给另一个类中的函数,该函数将使用它。
这是我的 Linq 查询:
var cursos = (from c in db.Curso
join cc in db.CursoCategoria on c.cursoCategoriaId equals cc.ID
where c.ativo == 1 && c.destaque == 1
select new { ID = c.ID,
nome = c.nome,
imgAbre = c.imagemAbre,
imgFecha = c.imagemEfeito,
cURL = c.URL,
ccURL = cc.URL,
cCor = cc.cor}).Take(10).ToList();
这就是我调用函数的方式:
var objHelper = new HelperController();
siteVM.lstCursosWall = Json(objHelper.MontaWallCurso());
这是我在HelperController中的函数,这个类也是一个Controller,我有它是因为我有几个帮助函数和项目的ajax方法:
public string MontaWallCurso()
{
//TODO STUFF
}
那么,如果我没有类型,我该如何传递这个对象呢?
注意:我使用的是我使用 EF 从我的数据库创建的 DAL 模型,不知道这是否有用。
编辑
所以我改变了我的方法并创建了一个类来填充和传输数据,但现在我在将 linq 结果传递给对象时遇到了问题。
var siteVM = new SiteViewModel();
var cursos = new List<CursoWall>();
var lCursos = (from c in db.Curso
join cc in db.CursoCategoria on c.cursoCategoriaId equals cc.ID
where c.ativo == 1 && c.destaque == 1
select new { ID = c.ID,
nome = c.nome,
imgAbre = c.imagemAbre,
imgFecha = c.imagemEfeito,
cURL = c.URL,
ccURL = cc.URL,
cCor = cc.cor}).Take(10).ToList();
cursos.AddRange(lCursos);
班级:
public class CursoWall
{
public int ID { get; set; }
public string nome { get; set; }
public string imgAbre { get; set; }
public string imgFecha { get; set; }
public string cURL { get; set; }
public string ccURL { get; set; }
public string cCor { get; set; }
}
【问题讨论】:
-
代替
select new {...做select new CursoWall() {... -
您也可以摆脱 lCursos 变量和 AddRange 并直接分配,因为您正在创建一个新 List
-
完美运行,感谢@Hogan。
标签: c# .net asp.net-mvc linq asp.net-mvc-3