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();
- material 的示例 =>“ابو-قرمò-رد”
- Item.Material 的示例 =>“ابی,سبò”
更新(本地测试):
我在一些本地字符串中测试了相同的 linq 并使用 linq to object,答案是正确的!!!但是在 linq to sql 和服务器字符串中,它总是说找不到任何东西!有什么问题?
我发现,其中一个项目的 Color 属性为 null 并导致异常,return 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();
- material 的示例 =>“ابو-قرمò-رد”
- Item.Material 的示例 =>“ابی,سبò”
更新(本地测试):
我在一些本地字符串中测试了相同的 linq 并使用 linq to object,答案是正确的!!!但是在 linq to sql 和服务器字符串中,它总是说找不到任何东西!有什么问题?
我发现,其中一个项目的 Color 属性为 null 并导致异常,return null。所以我在拆分之前添加了一个不为空的检查并且它有效。
谢谢大家。