我有两个字符串数组,想看是否有任何交集。我在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个字节的字符,我想也许这是问题,但我不知道如何解决它。
有什么解决方案吗?
更新(AllItems和示例):
List<Item> AllItems = (from item in db.Items
select item).ToList();
更新(本地测试):
我在一些本地字符串中测试相同的linq并使用linq对象,答案是正确的!但是在linq到sql和服务器字符串中它始终说没有找到!有什么问题?
答案 0 :(得分:0)
我发现,其中一个Item的Color属性为null并导致异常并返回null。所以我在分割之前添加一个检查不是null,它可以工作。
谢谢你们所有人。