【问题标题】:ASP.NET check if LinqToEntities returned something or notASP.NET 检查 Linq To Entities 是否返回了某些内容
【发布时间】:2010-04-08 20:00:26
【问题描述】:

如何使这个方法返回布尔值,取决于查询返回。假 - 没有,真 - 数据存在。在我刚刚从 uniqueQuote.Count() 返回 int 但看起来不是很好的方法之前。谢谢!

private bool CheckEnquiryUser(int enquiryId, Guid userId)
            {
                int selectedEnquiryId = enquiryId;
                Guid currentUserId = userId;
                Entities ctx3 = new Entities();
                var uniqueQuote = from quot in ctx3.Enquiries.Include("aspnet_Users")
                                  where quot.EnquiryId == selectedEnquiryId &&
                                  quot.aspnet_Users.UserId == currentUserId

                              select quot;

            bool exist = uniqueQuote;
            return exist;

【问题讨论】:

    标签: asp.net entity-framework


    【解决方案1】:

    使用Enumerable.Any method

    return uniqueQuote.Any();
    

    或者直接将谓词传递给它:

    return ctx3.Enquiries.Include("aspnet_Users")
               .Any(quot => quot.EnquiryId == selectedEnquiryId
                           && quot.aspnet_Users.UserId == currentUserId);
    

    【讨论】:

      【解决方案2】:

      我比较习惯这种格式,不过你可以翻译成使用.Any

      return ctx3.Enquiries.Include("aspnet_Users")
           .Any(x=> x.EnquiryId == selectedEnquiryId &&
                 x.aspnet_Users.UserId == currentUserId);
      

      【讨论】:

        【解决方案3】:

        尝试类似:

        return uniqueQuote.Count() > 0;
        

        【讨论】:

        • 当你的意思是.Any()时,千万不要使用.Count() > 0;后者效率更高,尤其是在转换为 SQL 时。
        • 非常正确,没有想到“任何”。但是,如果您已经将结果保存在集合中,.Count > 0 可能是最快的方法
        • 取决于集合。如果是链表,Count() 会比Any() 慢。如果是List<T>,性能应该相似。 然而,.Any() 总是更有表现力,Count() > 0 更有命令性。
        • 也许性能是相似的。但是,您说的 Count() 与“Count”不同。 "Count" 是一个存储的整数,用于比较 10 > 0 时要快得多,而不必开始迭代 :)
        • Count()Count 相同,当底层类型实现ICollection msdn.microsoft.com/en-us/library/bb535181.aspx 所以在几乎所有同时存在CountCount() 的情况下,它们的性能将是一样的。
        猜你喜欢
        • 2019-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多