Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在LINQ方法中声明变量_C#_Asp.net_Linq - Fatal编程技术网

C# 如何在LINQ方法中声明变量

C# 如何在LINQ方法中声明变量,c#,asp.net,linq,C#,Asp.net,Linq,如何在下面的方法中声明变量 例如: double price = double.Parse(((TextBox)r.FindControl("txtUnitprice")).Text); double total=GvProducts.Rows .Cast() .Where(r=>((复选框)r.FindControl(“chkSel”)。选中) .Sum(r=> double.Parse(((TextBox)r.FindControl(“txtQuantity”)).Text)* dou

如何在下面的方法中声明变量

例如:

double price = double.Parse(((TextBox)r.FindControl("txtUnitprice")).Text); 

double total=GvProducts.Rows
.Cast()
.Where(r=>((复选框)r.FindControl(“chkSel”)。选中)
.Sum(r=>
double.Parse(((TextBox)r.FindControl(“txtQuantity”)).Text)*
double.Parse(((TextBox)r.FindControl(“TxUnitPrice”)).Text));

当任何方法需要一个
函数时,您有两个可能性(确切地说是三个)

  • 添加单行表达式(如上所述)
  • 添加代理的名称:

    Sum(x=>MyMethod(x))
    其中,
    MyMethod
    是类中返回
    int
    并预期为
    T
    的方法

  • 添加一个包含在花括号中的多行表达式:

    Sum(x=>{/*任何语句*/})


  • 在查询语法中,您可以使用
    let
    关键字,在方法语法中,您可以使用匿名类型。
    r=>{double price=double.Parse(((TextBox)r.FindControl(“txtnitprice”)).Text);/*使用price*/;return price;}
    。请注意,如果您正在传递表达式(我相信在本例中您不是),那么您将无法编写表达式块(因此无法在表达式中定义变量)
    double total = GvProducts.Rows
                             .Cast<GridViewRow>()
                             .Where(r => ((CheckBox)r.FindControl("chkSel")).Checked)
                             .Sum(r => 
                                  double.Parse(((TextBox)r.FindControl("txtQuantity")).Text) * 
                                  double.Parse(((TextBox)r.FindControl("txtUnitprice")).Text));