如何在linq中设置If else语句

时间:2012-04-13 16:19:08

标签: c# sql linq

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

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....)
}

2 个答案:

答案 0 :(得分:1)

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

关于数据类型,您可以更改此内容:

String zero = "0";

到此:

decimal zero=0;

答案 1 :(得分:0)

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

修改:实际上您在查询上调用了"IEnumerable<string>" in the query; you should remove that ToString,因此您只需获得{{1}}。