繁体   English   中英

来自实体框架的FirstOrDefault中的C#String.Compare

[英]C# String.Compare in FirstOrDefault from entity framework

我正在失去它... = \\

使用.NET Framework 4使用实体框架访问MS SQL DB

(JFYI-这是一些看起来很丑陋的代码。由于它是用于本地服务的,因此永远无法使用大于1000行的表-所选择的工具集或多或少都可以接受。)

运行下一个代码

var itemOfInterest = entity.tbl_Items
                           .FirstOrDefault(item => 
                                string.Compare(item.Name, SomeLocalItem.Name, true) == 0 
                            && (string.Compare(item.tbl_Server.FQDN, SomeLocalItem.ServerFQDN, true) == 0) 
                            || (string.Compare(item.Server.FQDN, WithoutDomainLocalFQDN, true) == 0)
                            );

它会返回我的第一个(或空值)项目,

    (string.Compare(item.tbl_Server.FQDN, SomeLocalItem.ServerFQDN, true) == 0)
 || (string.Compare(item.Server.FQDN, WithoutDomainLocalFQDN, true) == 0)

原因

跑步时

var serviceOfInterest = entity.tbl_Service
                              .Where(item => string.Compare(item.Name, SomeLocalItem.Name, true) == 0)
                              .FirstOrDefault(item => 
                                   (string.Compare(item.tbl_Server.FQDN, SomeLocalItem.ServerFQDN, true) == 0) 
                                || (string.Compare(item.Server.FQDN, WithoutDomainLocalFQDN, true) == 0)
                               );

我得到正确的结果。

我不舒服 可能这里的问题确实很简单,但我不能仅仅看到它。 在项目名称中比较的字符串看起来像这样:

“我的真棒物品-钢笔。”

“我的真棒物品-爷爷枪”

“我的令人敬畏的物品-放在口袋里的东西-给你”

任何帮助表示赞赏。 我什至可以给我起这样的问题的名字,但我确实真的需要答案。

提前谢谢了。

尝试这个,

var itemOfInterest = entity.tbl_Items.FirstOrDefault(item => string.Compare(item.Name, SomeLocalItem.Name, true) == 0 && ((string.Compare(item.tbl_Server.FQDN, SomeLocalItem.ServerFQDN, true) == 0) || (string.Compare(item.Server.FQDN, WithoutDomainLocalFQDN, true) == 0)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM