2016-11-22 22 views
0

我LINQ的工作,但我得到了,当我在LINQ选择查询调用CheckValuedoubleOrNot()功能有问题。我如何调用select函数功能在LINQ

我怎样才能在SELECT查询通话功能与LINQ? 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; 
} 
+1

?如果您传递的值不是双精度值,则会发生异常。而“ActionResult”没有任何意义。如果你想检查一个值是否是double,那么使用'value is double'。 – Sefe

+0

是的,你是对的,但在将返回类型“ActionResult”更改为“dynamic”之后,当我调用函数时,会出现同样的问题 – AmanMiddha

+0

不要只是进行代码更改以使错误消失。 _了解_什么是错的,并使_right_更改。 – Sefe

回答

0

为什么是U使用选择?我建议用在哪里,东西线这样的:

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) 
+0

this不工作 – AmanMiddha

+0

感谢兄弟,为您的效果 – AmanMiddha

0

如果我理解你正确,你想是这样的:

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

Select你重新映射集合的元素IEnumerable<ActionResult>,这是元素双或bool。在Where中筛选出错误的值,并且只采用双元素。

0

发出解决

listBoardData.Select(X => CheckValuedoubleOrNot(x.FromDuration)!= NULL);

public static double CheckValuedoubleOrNot(string value) { double price; double returnType = 0.0; 如果(Double.TryParse(值,出价)) { 返回类型=价格; } return returnType; }

有两个原因,我得到了一个错误

  1. 我是用返回类型的ActionResult根据函数,它是不相关的。
  2. 为什么你使用`dynamic`,而不是`object`我没有使用静态键盘

感谢

相关问题