在LINQPad4中将查询表达式转换为lambda
在编写代码时,我遇到了一个LINQ查询,我可以用查询语法完成它,但不能用lamda语法。虽然这在应用程序中可以很好地工作,但我想学习我正在尝试做的事情的查询语法 基本上,我有一个包含视图的数据库,CO_Leather_V和CO_LeatherSizeColor_V。我还有两个类,CutingOrder和CutingOrderDetail。CuttingOrderDetail完全包含字符串、int和float属性。CuttingOrder类包含2个字符串属性和一个CuttingOrderDetails列表在LINQPad4中将查询表达式转换为lambda,linq,linqpad,Linq,Linqpad,在编写代码时,我遇到了一个LINQ查询,我可以用查询语法完成它,但不能用lamda语法。虽然这在应用程序中可以很好地工作,但我想学习我正在尝试做的事情的查询语法 基本上,我有一个包含视图的数据库,CO_Leather_V和CO_LeatherSizeColor_V。我还有两个类,CutingOrder和CutingOrderDetail。CuttingOrderDetail完全包含字符串、int和float属性。CuttingOrder类包含2个字符串属性和一个CuttingOrderDetai
public class CuttingOrder
{
public string cuttingOrderNo { get; set; }
public string reserveSalesOrderNo { get; set; }
public List<CuttingOrderDetail> details { get; set; }
}
public class CuttingOrderDetail
{
public string cuttingOrderNo { get; set; }
public string reserveSalesOrderNo { get; set; }
public string itemCode { get; set; }
public string material { get; set; }
public string color { get; set; }
public string size { get; set; }
public int qty { get; set; }
public float squareFeet { get; set; }
public float squareFeetUsed { get; set; }
}
我使用以下查询将其转换为在LINQPad中工作,但无法在lambda窗格中显示任何内容
void Main()
{
var p = (from l in CO_Leather_V
select new CuttingOrder
{
cuttingOrderNo = "NOT SET",
reserveSalesOrderNo = "FAKE_SO_NO",
details = (
from d in CO_LeatherSizeColor_V
select new CuttingOrderDetail
{
cuttingOrderNo = d.OrderNo
}
).ToList()
}).ToList();
p.Dump();
}
// Define other methods and classes here
public class CuttingOrder
{
public string cuttingOrderNo { get; set; }
public string reserveSalesOrderNo { get; set; }
public List<CuttingOrderDetail> details { get; set; }
}
public class CuttingOrderDetail
{
public string cuttingOrderNo { get; set; }
public string reserveSalesOrderNo { get; set; }
public string itemCode { get; set; }
public string material { get; set; }
public string color { get; set; }
public string size { get; set; }
public int qty { get; set; }
public float squareFeet { get; set; }
public float squareFeetUsed { get; set; }
}
void Main()
{
var p=(从CO_皮革中的l开始)
选择新的切割顺序
{
cuttingOrderNo=“未设置”,
reserveSalesOrderNo=“假冒”,
详情=(
从d到CO_皮革尺寸颜色V
选择新切割或详细信息
{
切割订单号=d.订单号
}
)托利斯先生()
}).ToList();
p、 Dump();
}
//在此处定义其他方法和类
公共类剪接顺序
{
公共字符串剪切Orderno{get;set;}
公共字符串reserveSalesOrderNo{get;set;}
公共列表详细信息{get;set;}
}
公共类剪报
{
公共字符串剪切Orderno{get;set;}
公共字符串reserveSalesOrderNo{get;set;}
公共字符串itemCode{get;set;}
公共字符串材质{get;set;}
公共字符串颜色{get;set;}
公共字符串大小{get;set;}
公共整数数量{get;set;}
公共浮动平方英尺{get;set;}
公共浮点squareFeetUsed{get;set;}
}
如果有人知道如何以lambda形式执行linq查询,或者知道LINQPad无法生成lamda表单的原因,我们将不胜感激。这应该可以:
var p = CO_Leather_V.Select(l=> new CuttingOrder
{
cuttingOrderNo = "NOT SET",
reserveSalesOrderNo = "FAKE_SO_NO",
details = CO_LeatherSizeColor_V.Select(d=>new CuttingOrderDetail {cuttingOrderNo = d.OrderNo}).ToList()
}).ToList();
但是,CO\u LeatherSizeColor\u V
不引用l
,因此每次都会得到该表中的所有内容。您可能需要以下内容:
details = l.LeatherSizeColor.Select(d=>new CuttingOrderDetail {cuttingOrderNo = d.OrderNo}).ToList()
换成那句话
details = l.LeatherSizeColor.Select(d=>new CuttingOrderDetail {cuttingOrderNo = d.OrderNo}).ToList()