如何在动态 linq 中编写此查询?我知道如何进行选择,但如何进行“让”?
var qry = from sr in data.Addresses
let AddressType_Desc = sr.AddressType.AddressType_Desc
let Country_Desc = sr.Country.Country_Desc
where sr.Customer_GUID == CustomerGuid
select new
{
sr.Address_GUID,
sr.People_GUID,
sr.AddressType_GUID,
AddressType_Desc,
sr.Address1,
sr.Address2,
sr.City,
sr.State,
sr.Zip,
sr.County,
sr.Country_GUID,
Country_Desc,
sr.UseAsMailing
};
最佳答案
在 linq 表达式方法语法和 dynamic LINQ 中没有与 let
等价的东西.
Let
只能帮助您提高查询的可读性。它只是用作别名或局部变量。您可以想象,在方法语法中,您将无法在声明它的方法范围之外访问它。
在您的情况下,只需将 let
变量初始化放入 select
中即可。
在 linq 方法语法中像这样:
var qry = data.Adresses.Where(sr => sr.Customer_GUID == CustomerGuid)
.Select(sr => new {
sr.Address_GUID,
....
sr.AddressType.AddressType_Desc,
sr.Country.Country_Desc
});
或类似于动态 LINQ(select 子句为 string
):
var qry = data.Adresses.Where(sr => sr.Customer_GUID == CustomerGuid)
.Select("new (Address_GUID, AddressType.AddressType_Desc, Country.Country_Desc)");
您将获得与 linq 查询语法相同的结果。
其他表达方式类似。您唯一需要做的就是直接使用值而不是 let
别名。
关于c# - 如何在动态 LINQ 中执行 "let"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799803/