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

String Comparison in LINQ to SQL result null

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

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 个字节的波斯语字符,我想这可能是问题所在,但我不知道如何解决它。

有什么解决办法吗?

更新(所有项目和示例):

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

更新(本地测试):

我在一些本地字符串中测试了相同的 linq 并使用 linq to object,答案是正确的!!!但是在 linq to sql 和服务器字符串中,它总是说找不到任何东西!有什么问题?

我发现,其中一个项目的 Color 属性为 null 并导致异常,return null。所以我在拆分之前添加了一个不为空的检查并且它有效。

谢谢大家。