c# – LINQ to SQL中的字符串比较结果为null

我有两个字符串数组,想看看是否有任何交集.我在c#中使用 linqsql获取数据库字段并将其与用户输入进行比较,如下所示:

string[] Materials = material.Split('-');
AllItems = (from item in AllItems
            where item.Material.Split(',').Intersect(Materials).Count() != 0
            select item).ToList();

材料是用户输入字符串,它具有 – 分隔符,在数据库我有字符串,分隔符.

我想知道为什么结果总是为空.我的意思是查询结果说没有交集,但我检查并且有.

我使用的另一个替代查询并获得相同的结果是:

string[] Materials = material.Split('-');
HashSet<string> stringSet = new HashSet<string>(Materials);
AllItems = (from item in AllItems
            where item.Color.Split(',').Where(c => stringSet.Contains(c)).Count() != 0
            select item).ToList();

我很困惑这些查询的问题.我应该提一下,字符串是UTF8,并且在波斯语中包含2个字节的字符,我想也许这是问题,但我不知道如何解决它.

有什么解决方案吗?

更新(AllItems和示例):

List<Item> AllItems = (from item in db.Items
                       select item).ToList();

>材料示例=> “ابی-قرمز-زرد”
> Item.Material =>的示例“ابی,سبز”

更新(本地测试):

我在一些本地字符串中测试相同的linq并使用linq对象,答案是正确的!但是在linq到sql和服务器字符串中它始终说没有找到!有什么问题?

解决方法

我发现,其中一个Item的Color属性为null并导致异常并返回null.所以我在分割之前添加一个检查不是null,它可以工作.

谢谢你们所有人.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...