当前位置:  开发笔记 > 编程语言 > 正文

Linq返回列表或单个对象

如何解决《Linq返回列表或单个对象》经验,为你挑选了1个好方法。

我有像这样的Linq to Entities查询:

var results = from r in entities.MachineRevision
              where r.Machine.IdMachine == pIdMachine
                 && r.Category == (int)pCategory
              select r;

通常,我使用下面的代码来检查是否返回了一些结果:

if (results.Count() > 0)
{
    return new oMachineRevision(results.First().IdMachineRevision);
}

但是,我在if条件中得到NotSupportedException.

错误消息是:无法创建类型'Closure type'的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').

请注意,pCategory是Enum类型.



1> tvanfosson..:

编辑:根据您的更新,错误可能与您的实体类中的枚举有关.有关更多信息和解决方法,请参阅此博客条目.我将原始答案作为对查询语法的改进.

尝试使用FirstOrDefault在查询本身中选择第一个实体,然后检查结果是否为null.

int compareCategory = (int)pCategory; // just a guess
var result = (from r in entities.MachineRevision
              where r.Machine.IdMachine == pIdMachine
                 && r.Category == compareCategory
              select r).FirstOrDefault();

if (result != null)
{
     return new oMachineRevision(result.IdMachineRevision);
}

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有