Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ中的字符串比较到SQL结果null_C#_Sql Server_String_Linq_String Comparison - Fatal编程技术网

C# LINQ中的字符串比较到SQL结果null

C# LINQ中的字符串比较到SQL结果null,c#,sql-server,string,linq,string-comparison,C#,Sql Server,String,Linq,String Comparison,我有两个字符串数组,想看看是否有交集。我在c中使用linq to sql并获取数据库字段,并将其与用户输入进行比较,如下所示: string[] Materials = material.Split('-'); AllItems = (from item in AllItems where item.Material.Split(',').Intersect(Materials).Count() != 0 select item).ToList()

我有两个字符串数组,想看看是否有交集。我在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-1,在波斯语中包含2字节字符,我想这可能是问题所在,但我不知道如何解决它

有什么解决办法吗

更新AllItems和示例:

List<Item> AllItems = (from item in db.Items
                       select item).ToList();
材料示例=> 物料的示例=>ابی,سبز 更新本地测试:


我在一些本地字符串中测试了相同的linq,并使用linq对象,答案是正确的!!!但是在LINQtoSQL和服务器字符串中,它总是说什么也找不到!有什么问题吗

我发现,该项的一个Color属性为null,导致异常并返回null。因此,我在拆分之前添加了一个不为null的检查,它可以正常工作


谢谢大家。

你们能举个例子说明material和item.material的值吗?@juharr我把它们添加到问题中。我建议用它来轻松调试和查看主要发生了什么。但不,它不会慢下来。它的性能应该与Linq代码的性能大致相同。@AlecMenconi感谢您的评论,我已经尝试了所有这些方法,最后发现该项的一个颜色属性为null,并导致异常并返回null!!!谢谢你们,太好了,很高兴你们能理解。