gpt4 book ai didi

c# - 我可以使用动态 LInq 执行此操作还是有更好的方法 - Linq、C#、VS2008

转载 作者:行者123 更新时间:2023-11-30 22:49:53 26 4
gpt4 key购买 nike

这是我的静态查询

    var results = from v in users
join d in orders on v.UserId equals d.UserId
join p in Products on d.ProductId equals p.ProductId
where v.UserName.Contains(UserName)
where v.FirstName.Equals(FirstName)
where v.ZipCity.Equals(ZipCity)
where v.OrderDate >= OrderDate && v.OrderDate < OrderDate
where p.ProductName.Equals(ProductName)
select v.Email, v.ShippingCity, v.TrackingNo;

我正在研究动态 Linq,并试图扩展我对它的感受。上面的查询是在一个名为

的方法中
GetOrder(string UserName, string FirstName, string ZipCity, DateTime OrderDate, ProductName)

我能否使用 Dynamic Linq 执行此操作,仅当输入参数中的 ProductName 不为空时才加入 Products 表?

我在关注这个 http://blog.bvsoftware.com/post/2008/02/27/How-to-create-a-Dynamic-LINQ-Query-Programmatically.aspx

最佳答案

我想我会在 IEnumerable 上使用扩展方法而不是 Dynamic LINQ。

var result = from v in users
join d in orders on v.UserId equals d.UserId
where v.UserName.Contains(UserName)
where v.FirstName.Equals(FirstName)
where v.ZipCity.Equals(ZipCity)
where v.OrderDate >= OrderDate && v.OrderDate < OrderDate
select v.Email, v.ShippingCity, v.TrackingNo, d.ProductId;

if (!string.IsNullOrEmpty(ProductName))
{
result = result.Join( Products.Where( p=> p.ProductName == ProductName ),
d => d.ProductId,
p => p.ProductId,
(d,p) => new
{
d.Email,
d.ShippingCity,
d.TrackingNo
});
}

关于c# - 我可以使用动态 LInq 执行此操作还是有更好的方法 - Linq、C#、VS2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/893115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com