C# 在LINQ查询中使用字符串

C# 在LINQ查询中使用字符串,c#,wpf,linq,where-clause,dynamic-queries,C#,Wpf,Linq,Where Clause,Dynamic Queries,我目前正在c#开发一个WPF项目。该项目采用一个字符串(newMemoryRFID),该字符串是在初始化页面时定义的,并在查询中使用它。像这样 var query = from c in MemoryData.Memory where c.RFID == newMemoryRFID select c; this.DataContext = query; thi

我目前正在c#开发一个WPF项目。该项目采用一个字符串(newMemoryRFID),该字符串是在初始化页面时定义的,并在查询中使用它。像这样

var query = 
            from c in MemoryData.Memory
                    where c.RFID == newMemoryRFID
                    select c;
        this.DataContext = query;
        this.View = ((CollectionView)(CollectionViewSource.GetDefaultView(this.DataContext)));
这将生成一个空的DataContext

然而,当我使用与newMemoryRFID相同的测试数据作为查询时

var query = 
            from c in MemoryData.Memory
                    where c.RFID == "0F02D76B05"
                    select c;
        this.DataContext = query;
        this.View = ((CollectionView)(CollectionViewSource.GetDefaultView(this.DataContext)));

查询得到正确的记录。正如你可能会告诉我,我不是最好的程序员,所以你的答案越简单越好。非常感谢,现在是使用调试器的时候了。听起来newMemoryRFID在创建查询时没有设置为“0F02D76B05”

如果你不能介入,至少要介入

Debug.WriteLine(string.Format("newMemoryRFID = {0}", newMemoryRFID); 
排队前

var query = ...

现在是使用调试器的时候了。听起来newMemoryRFID在创建查询时没有设置为“0F02D76B05”

如果你不能介入,至少要介入

Debug.WriteLine(string.Format("newMemoryRFID = {0}", newMemoryRFID); 
排队前

var query = ...

尝试在字符串的开头和结尾修剪可能导致字符串匹配失败的空格。

尝试在字符串的开头和结尾修剪可能导致字符串匹配失败的空格。

如果在硬编码NewMemoryFID字符串时它起作用,那么问题就出在NewMemoryFID上。在代码执行之前,在代码中放置断点。然后检查
newMemoryRFID
的值。可能会有一些空格或其他内容。如果在硬编码newMemoryRFID字符串时有效,那么问题就出在newMemoryRFID上。在代码执行之前,在代码中放置断点。然后检查
newMemoryRFID
的值。可能会有一些空白或其他内容。我希望是这样,但我从头到尾都在关注NewMemoryFID,而且从我所知道的情况来看,它与我所期望的相符,即NewMemoryFID“\n0F02D76B05\r”字符串您希望NewMemoryFID包含\n和\r吗?看起来你有额外的角色。尝试使用newMemoryRFID.Trim()。我没有预料到它们,但我尝试了使用.Trim(),但没有任何帮助:(这应该会将错误写入调试跟踪(或者您可以在即时窗口或其他任何地方检查它)。debug.WriteLine(string.Format(“newMemoryRFID=”0F02D76B05\”is{0}),newMemoryRFID=”0F02D76B05“);这些额外的不可打印字符意味着这两个字符串不一样。您应该只需要清理从源代码中获得的任何内容。.Replace(“\n”,”)。Replace(“\r”,”)是一种快速且非常简单的方法。查看正则表达式或RFID阅读器的通信规范(txt2re.com可能会在这里帮助您)。我希望是这样,但我从头到尾都在关注newMemoryRFID,从我所知道的情况来看,它与我所期望的相符,即newMemoryRFID“\n0F02D76B05\r”字符串您希望newMemoryRFID包含\n和\r吗?看起来您有额外的字符。尝试使用newMemoryRFID.Trim()。我没想到会这样,但我尝试过使用.Trim(),但没有任何帮助:(这应该会将错误写入调试跟踪(或者您可以在即时窗口或其他任何地方进行检查)。debug.WriteLine(string.Format(“newMemoryRFID=\”0F02D76B05\”是{0}),newMemoryRFID=”0F02D76B05“);这些额外的不可打印字符意味着这两个字符串不一样。您应该只需要清理从源代码中获得的任何内容。.Replace(“\n”,”)。Replace(“\r”,”)是一种快速且非常简单的方法。查看正则表达式或RFID阅读器的通信规范(txt2re.com可能会在这里帮助您)。