C# 如何比较lambda表达式中的字符串
我有一个问题,我将感谢任何帮助 背景-我有一个保存字符串的数据库(即-StackOverFlow),我需要将传入的值与该字符串进行比较,并使其区分大小写 现在我有一个到数据库的连接(使用EF 4)、一个C# 如何比较lambda表达式中的字符串,c#,string,lambda,comparison,C#,String,Lambda,Comparison,我有一个问题,我将感谢任何帮助 背景-我有一个保存字符串的数据库(即-StackOverFlow),我需要将传入的值与该字符串进行比较,并使其区分大小写 现在我有一个到数据库的连接(使用EF 4)、一个IRepo接口(我用来访问表)和一个FindAllMatching方法,该方法返回一个IQueryable并接受一个表达式参数 回购类别: public class TableRepo : IRepo<table>{ private EF4Entity _dc = new EF4E
IRepo
接口(我用来访问表)和一个FindAllMatching
方法,该方法返回一个IQueryable
并接受一个表达式
参数
回购类别:
public class TableRepo : IRepo<table>{
private EF4Entity _dc = new EF4Entity();
public IQueryable<table> FindAllMatching(Expression<Func<table, bool>> expression)
{
return _dc.table.Where(expression);
}
}
现在,当我传入一个字符串,该字符串在各个方面都与表中的内容相匹配,但在case(stackoverflow而不是stackoverflow)中,returnValue
实际上从表中返回一行。如果传入的值与数据库表中包含的值不完全匹配,我希望它返回null或零计数
我尝试过使用.Equals(在前端输入StringFromTextBoxOnFrontEnd,StringComparison.OrdinalIgnoreCase)
和所有其他字符串比较
值,但没有任何值比较大小写
如果您需要更多信息,请随时询问
谢谢,
Tim我想您会发现这不是代码的问题,而是数据库的问题。我认为您使用的是某种SQL Server风格。默认情况下,安装SQL Server时,所有文本查询都不区分大小写
您可能希望看到这一点以获得可能的答案。Linq to Sql使用数据库比较规则 您需要添加一个额外的IEnumerable。在结尾处对结果进行局部筛选
var returnValue = (ItableDB.FindAllMatching(x => x.ColumnInTableThatHoldsString == enteredStringFromTextBoxOnFrontEnd) as IEnumerble<TableRepo>).Where(x => x.ColumnInTableThatHoldsString == enteredStringFromTextBoxOnFrontEnd);
var returnValue=(ItableDB.FindAllMatching(x=>x.ColumnTableThatHoldsString==enteredStringFromTextBoxOnFrontEnd)作为IEnumerble)。其中(x=>x.ColumnTableThatHoldsString==enteredStringFromTextBoxOnFrontEnd);
var returnValue = (ItableDB.FindAllMatching(x => x.ColumnInTableThatHoldsString == enteredStringFromTextBoxOnFrontEnd) as IEnumerble<TableRepo>).Where(x => x.ColumnInTableThatHoldsString == enteredStringFromTextBoxOnFrontEnd);