在同一语句中使用linq和return类型查询项?

时间:2013-05-28 12:23:27

标签: c# linq

我有以下两行代码,它们首先从查询中返回一个项目,然后使用第一个查询的值创建另一个项目。我想将这两行合并为一个陈述。请记住,在某些情况下,第一个查询的结果可能为空。

var x = uow.Profiles.FindByID(profileId).Competitor;

return Json(new Organisation() { Name = x.Name, ID = x.ID, IsClient = x.IsClient, IsDeleted = x.IsDeleted }, JsonRequestBehavior.AllowGet);

2 个答案:

答案 0 :(得分:0)

如果您担心这一点,也许可以添加空检查:

var result = uow.Profiles.FindByID(profileId);

if(result != null)
{
   var competitor = result.Competitor;
   return Json(new Organisation() { Name = competitor.Name, ID = competitor.ID, IsClient = competitor.IsClient, IsDeleted = competitor.IsDeleted }, JsonRequestBehavior.AllowGet);
}

return null; // or whatever you can default to

确定问题究竟是什么以及LINQ如何提供帮助(您没有必要 使用它),只需确保您的代码可读。

答案 1 :(得分:-1)

编辑:最后使用IEnumerable(我假设个人资料是一个)

ouw.Profiles.Single(p => p.Id == profileId).Select
(p => Json(
    new Organisation()
    {
        Name = p.Competitor.Name,
        ID = p.Competitor.ID,
        IsClient = p.Competitor.IsClient,
        IsDeleted = p.Competitor.IsDeleted
    },
    JsonRequestBehavior.AllowGet)
);