2012-04-13 38 views
-2

我想根据结果评估查询结果并进行切换。如果'chk'查询从t.c_pointsTotal列返回为“0”,则使用query1。我想我遇到的数据类型问题(评估为字符串,因为这就是我知道该怎么做)?在db中c_pointsTotal是一个浮点数。我该如何做到这一点?因为它是下面的代码不正确评估。如何设置linq中的else语句

p.s.如果有人愿意,可以告诉我什么时候或为什么使用Linq作为与SQL(带有DataReader)相同的效果。

String zero = "0"; 
var chk = (from t in db.t_BannerUsers 
      where t.c_call_id.ToString().ToLower().Equals(c_call_id.ToLower())  
      && t.c_user_id.ToString().ToLower().Equals(c_user_id.ToLower()) 
      select ((t.c_pointsTotal))).ToString(); 

if (String.Equals(chk, zero)) 
{ 
    return(query1.....) 
} 
else 
{ 
    return (query2....) 
} 
+3

什么是'c_call_id'的类型? – 2012-04-13 16:23:29

+1

什么是你的代码不工作?你有没有尝试过附加一个调试器并评估chk? – 2012-04-13 16:24:31

+0

目前,页面加载并且不管'chk'的值是什么,它总是进入query1。当我尝试调试'chk'时,不显示查询的结果,只是查询它是自己的? – AhabLives 2012-04-13 16:27:25

回答

0

chk是一系列项目。 zero是单个字符串。如果chk只返回1个项目,则可以使用LINQ First方法获取该项目;如果该项目可能为空,则使用FirstOrDefault。如果它可以返回几个,你需要决定你想如何表现。如果它只是看第一个,检查所有这些,等等。

编辑:其实你在查询上打电话ToString,所以你只会得到"IEnumerable<string>" in the query; you should remove that ToString

+0

您提到的这个'第一'方法是什么...以及我如何或在哪里使用'第一'方法? – AhabLives 2012-04-13 16:34:51

+1

MSDN是你的朋友...首先 - http://msdn.microsoft.com/en-us/library/bb291976.aspx ... FirstOrDefault - http://msdn.microsoft.com/en-us/library/ bb340482.aspx – CraigW 2012-04-13 16:44:20

+0

刚试过。没有不同。不管怎么说,还是要谢谢你。 – AhabLives 2012-04-13 16:56:05

1

首先,您必须确保查询只返回一个结果。

关于数据类型,你可以改变这一点:

String zero = "0"; 

这样:

decimal zero=0;