gpt4 book ai didi

c# - 更简单(更好)的方式来编写 LINQ 查询

转载 作者:行者123 更新时间:2023-11-30 14:24:10 25 4
gpt4 key购买 nike

我有两个 LINQ查询,我使用第一个LINQ的结果查询并使用 foreach 循环遍历找到的每个元素并在第二个 LINQ 中使用它查询

var entries = dbo.OnDemand.Where(c => c.LOTNO == LotNo).Where(c => c.ODHisDate >= start && c.ODHisDate <= end).Where(c => c.Activity.Contains(reprinted)).OrderBy(c => c.ODHisDate);

foreach (var X in entries)
{
Barcodes.Add(X.Barcode); // Barcodes is a List<string>
}

foreach (string barcode in Barcodes)
{
var entries2 = dbo.OnDemand.Where(c => c.Barcode.Contains(barcode)).Where(c => c.ODHisDate >= start && c.ODHisDate <= end).OrderBy(c => c.ODHisDate);

// Do stuff with entries2
}

有没有一种方法可以使用单个查询来执行此操作?

我四处阅读,人们使用 JOIN但我不完全确定如何使用它。

一些表达式对于两个查询都是通用的(选定的日期范围和 ORDERBY 按日期)

目前这种方法可行,但我认为有更好的方法可以实现我想要实现的目标。

如有任何帮助,我们将不胜感激。

编辑 1:

示例 SQL 查询:

select * FROM [dbo].[OnDemand]
where barcode in
(
SELECT [Barcode]
FROM [dbo].[OnDemand]
group by barcode
having count(*) > 1
)
and odhisdate between '2017-01-11' and '2017-01-31'

and Activity like '%reprinted%'

order by ODHisDate asc, ODHisTime asc

最佳答案

据我所知,不需要 JOIN,因为您查询的是同一个表,而不是尝试进行递归或交叉连接查询。

为什么要用相同的参数查询同一张表?您得到一个返回条目的 List,然后遍历 Barcode 值,然后再次返回并使用相同的 Barcode 值查询同一个表。

如果你想内联迭代,语法很简单,但我不确定你是否理解你在那里做什么。

dbo.OnDemand.Where(c => c.Barcode.Contains(barcode))
.Where(c => c.ODHisDate >= start && c.ODHisDate <= end)
.OrderBy(c => c.ODHisDate)
.ForEach(c =>
{
// do stuff
}

关于c# - 更简单(更好)的方式来编写 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42259219/

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