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));