C# 使用变量的Linq查询
嗨,我的项目中有以下Linq:C# 使用变量的Linq查询,c#,linq,C#,Linq,嗨,我的项目中有以下Linq: string claim; claim = txtImageVerificationClaimSearch.Text; var claimsearch = (from x in dbContext.view_ImageVerification_Shortened where(x.intClaimID = claim) select new 我收到一些错误消息: Cannot
string claim;
claim = txtImageVerificationClaimSearch.Text;
var claimsearch = (from x in dbContext.view_ImageVerification_Shortened
where(x.intClaimID = claim)
select new
我收到一些错误消息:
Cannot implicitly convert type 'string' to 'int'
我知道这个错误的意思,但我不知道修复它的语法。
我还收到了错误消息:
Error 2: Cannot convert lambda expression to type 'string' because it is not a delegate type
C:\_Applications-TFS\IVS\Main\ImageVerificationSystem\ImageVerificationSystem\Default.aspx.cs 97 36 ImageVerificationSystem
我也明白了:
Delegate 'System.Func<ImageVerificationSystem.view_ImageVerification_Shortened,int,bool>' does not take 1 arguments
委托“System.Func”不接受1个参数
谁能告诉我我做错了什么 你不需要括号里的内容
from x in dbContext.view_ImageVerification_Shortened
where x.intClaimID.ToString() == claim
select new { .. }
另外,=
用于比较=
用于作业
如果要比较两个不兼容的类型,需要转换其中一个。在这种情况下,可以对integer(intClaimID)使用
ToString
,或者将声明
解析为integer。需要double=
进行比较。您还试图将string
与int
进行比较。我建议首先将claim
转换为int
int claimId = int.Parse(claim);
var claimsearch = (from x in dbContext.view_ImageVerification_Shortened
where(x.intClaimID == claimId)
select x);
…您的问题是,
claim
是一个字符串,而intClaimID是一个int。换句话说,您是在比较苹果和桔子
您需要执行以下操作:
where x.ClaimName == claim
或者,您需要要求用户输入一个数字,在这种情况下,您必须将其转换为ant int(从文本框的字符串)
然后将其添加到表达式中
where x.intClaimID == userClaimID
错误清楚地表明你做错了什么?似乎
x.intClaimID
是整数,您尝试根据字符串检查它!!在赋值中,他get不能隐式地将类型“string”转换为“int”
您必须显式地强制转换它。-1对集合中的每个项进行字符串转换,而不是在单个字符串转换为int时执行字符串转换?这是非常低效的,我不会在一百万年内以这种方式解决它。考虑一下,如果这是一个使用LyQoSQL或类似的SQL查询会发生什么?是的,这是一个很大的问题。它可能需要数百万年。一百万年可能是夸张的,除非你是一个真正可怕的开发者。是的,我很高兴你承认你的失败,以及代码会有多慢。个人成长难道不是一件美妙的事情吗?不,不用谢我。请不要,知道你更开明就足够了!不,不可以-我告诉他先把他的声明转换成一个整数变量,然后在他的查询中使用它。也许我可以说得更清楚一些……啊,对不起,但它必须在(x.intClaimID==claimInt)的位置
int userClaimID = int.Parse(claim); // or TryParse
where x.intClaimID == userClaimID