- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
考虑下面的代码:
StockcheckJobs =
(from job in (from stockcheckItem in MDC.StockcheckItems
where distinctJobs.Contains(stockcheckItem.JobId)
group stockcheckItem by new { stockcheckItem.JobId, stockcheckItem.JobData.EngineerId } into jobs
select jobs).ToList()
let date = MJM.GetOrCreateJobData(job.Key.JobId).CompletedJob.Value
orderby date descending
select new StockcheckJobsModel.StockcheckJob()
{
JobId = job.Key.JobId,
Date = date,
Engineer = (EngineerModel)job.Key.EngineerId,
MatchingLines = job.Count(sti => sti.Quantity == sti.ExpectedQuantity),
DifferingLines = job.Count(sti => sti.Quantity != sti.ExpectedQuantity)
}).ToList()
中间有一个ToList()
,因为GetOrCreateJobData
方法不能转成sql。
因此,我不得不将查询的第一部分括在方括号中才能执行此操作,然后我使用外部查询来完成。
我知道我可以将其拆分为两个变量,但我不想这样做(这也在对象初始化程序中)。
当我必须执行 ToList
(或以其他方式进入 linq- to-objects) 在 linq 查询中间?
在一个理想的世界里,我想要这样的东西(尽可能接近):
StockcheckJobs =
from stockcheckItem in MDC.StockcheckItems
where distinctJobs.Contains(stockcheckItem.JobId)
group stockcheckItem by new { stockcheckItem.JobId, stockcheckItem.JobData.EngineerId } into jobs
MAGIC_DO_BELOW_AS_LINQ-TO-OBJECTS_KEYWORD_OR_SYNTAX
let date = MJM.GetOrCreateJobData(jobs.Key.JobId).CompletedJob.Value
orderby date descending
select new StockcheckJobsModel.StockcheckJob()
{
JobId = jobs.Key.JobId,
Date = date,
Engineer = new ThreeSixtyScheduling.Models.EngineerModel() { Number = jobs.Key.EngineerId },
MatchingLines = jobs.Count(sti => sti.Quantity == sti.ExpectedQuantity),
DifferingLines = jobs.Count(sti => sti.Quantity != sti.ExpectedQuantity)
};
最佳答案
您可以解决 GetOrCreateJobData
无法翻译成 SQL 的问题。
通过为指定的方法调用表达式实现自定义查询转换器,您可以控制 LINQ-to-SQL 解释方法的方式。有一篇很好的文章解释了这个过程并链接到可用的相关资源:http://www.codeproject.com/Articles/32968/QueryMap-Custom-translation-of-LINQ-expressions
或者,您可以将 GetOrCreateJobData
方法重构为使用表达式构建相同逻辑的扩展方法,以便 LINQ-to-SQL 可以自然地解释它。根据方法的复杂性,这可能比我的第一个建议更可行或更不可行。
关于c# - 是否有使用查询语法在 LINQ 查询中执行 ToList 的巧妙方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515575/
在 ToList() 中指定具体类型是否有意义? , AsEnumerable()等方法? 威尔.ToList()执行速度比 .ToList() 快? 最佳答案 如果编译器推断出一种类型而您想要指定另
给定在内存中(不是 LINQ to SQL)类列表: List myItems = /*lots and lots of items*/; 我正在使用 GroupBy() 语句对其进行分组: myIt
我对此不是 100%,所以我需要专家的意见。 ConcurrentQueue queue = new ConcurrentQueue(); List listA = queue.ToArray().T
JDK 引入了一个 API Stream.toList() 和 JDK-8180352 。这是我尝试将其性能与现有 Collectors.toList 进行比较的基准测试代码: @BenchmarkM
说到性能,我应该使用 .ToList().Distinct() 还是 .Distinct().ToList() ? 两种扩展方法是否生成相同的 SQL 查询? 看起来第二种方法应该表现更好,但这是真的
当我调用它时: using (var db = new MyDbContext()) { var yy = db.Products.Select(xx => xx.Id); var i
我正在寻找这些 LINQ 表达式的确认/澄清: var context = new SomeCustomDbContext() // LINQ to Entities? var items = co
JDK 16 now includes a toList() method directly on Stream instances。在以前的Java版本中,您始终必须使用collect方法并提供Co
我真的很困惑如何解决这个问题 public bool DeleteVegetationZone(ref Assessment objAssessment, int VegetationZoneIDT
import numpy as np from scipy.sparse import lil_matrix 使用 numpy 我得到 test_mat = (np.ones((4,6))) test
当我有一个 IEnumerable我不知道它是否是一个列表(根据 List ),我必须枚举 IEnumerable以确保我不会枚举那个可枚举项两次(例如循环两次,或类似的事情)。 Resharper
我不知道 LinqQuery.ToList().Distinct() 和 LinqQuery.Distinct().ToList(); 对我来说有什么区别看起来一样。 考虑这个示例代码: List s
给定以下 LINQ 语句,哪个更有效? 一个: public List GetLatestLogEntries() { var logEntries = from entry in db.Lo
我正在尝试使用 Moq 模拟 Entity Framework DbContext,尤其是它的扩展方法 Add()、Tolist() 和 Find()。 我需要 Find() 和 ToList() 方
这个问题在这里已经有了答案: java 8 Collector is not a functional interface, who can tell why? (2 个回答) Java8: Usin
我只是在尝试新的 kotlin 语言。我遇到了生成无限列表的序列。我生成了一个序列并尝试打印前 10 个元素。但是下面的代码没有打印任何东西: fun main(args: Array) {
我们的代码库中都弹出了这两个代码 pandas.DataFrame.columns.values.tolist() pandas.DataFrame.columns.tolist() 这些总是相同的吗
这些 linq 查询有什么区别: Students.Where(x=>x.City == "Lahore").ToList(); Students.ToList().Where(x=>x.City =
我试图通过创建一个存储前 3 个值的单独变量来过滤数组列表。但是,在集合中出现错误。我对此很陌生,所以任何帮助都会很棒! public static ArrayList exerciseDetail(
我看到以下代码: using(var iterator = source.GetEnumerator()) {...} 哪里source是 IEnumerable . 执行上述操作与转换相比有何优势
我是一名优秀的程序员,十分优秀!