如何在LINQ中的select函数中调用函数

时间:2016-11-22 09:41:05

标签: c# linq

我正在处理LINQ但是当我在CheckValuedoubleOrNot()的select select中调用LINQ函数时遇到了问题。

如何在LINQ中的select Query中调用函数? CheckValuedoubleOrNot是我在select语句中使用的函数。

我在这一行得到错误:

listBoardData.Select(CheckValuedoubleOrNot(x=>x.FromDuration)==false));

public ActionResult CheckValuedoubleOrNot(dynamic value)    
{
    double price;
    dynamic returnType;
    if (Double.TryParse(value, out price))
    {
        returnType = price;
    }
    else
    {
        returnType = false;
    }
    return returnType;
}

3 个答案:

答案 0 :(得分:0)

为什么你使用Select?我建议使用Where,这就行了:

public class DoubleResult
{
    public bool IsValid { get; set;}
    public double Result {get; set;}
}

public DoubleResult CheckValuedoubleOrNot(dynamic value)    
{
    double price;   
    if (Double.TryParse(value, out price))
    {
        return new DoubleResult { IsValid = true, Result = price };
    }
    else
    {
        return new DoubleResult { IsValid = false };
    }
}

listBoardData.Where(x => !CheckValuedoubleOrNot(x.FromDuration).IsValid)

答案 1 :(得分:0)

如果我理解正确,你想要这样的东西:

listBoardData.Select(d => CheckValuedoubleOrNot(d.FromDuration)))
             .Where(v => !v);

Select中,您将集合的元素重新映射到IEnumerable<ActionResult>,这些元素是double或bool。在Where中,您筛选出错误的值并仅采用双重元素。

答案 2 :(得分:0)

已发布已解决

listBoardData.Select(x =&gt; CheckValuedoubleOrNot(x.FromDuration)!= null);

public static double CheckValuedoubleOrNot(string value)         {             双倍价格;             double returnType = 0.0;             if(Double.TryParse(value,out price))             {                  returnType = price;             }             return returnType;         }

我收到错误的原因有两个

  1. 我使用的返回类型ActionResult与功能无关。
  2. 我没有使用静态键盘
  3. 谢谢