我想知道是否可以在一个IQueryable
语句中存储多个linq查询的结果?
我有一个查询,我在foreach中使用:
//Where OnDemandHistory is the table
IOrderedQueryable<OnDemandHistory> A;
foreach (int id in machineID)
{
A = OnDemandHistory.Where(c => c.MachineID == id).OrderByDescending(c => c.ODHisDate);
// I want to Order all results before writing to the table
foreach(var entry in A)
{
// I add to a table based on all entries found in A
}
}
我正在尝试获取机器ID匹配的所有条目。没有。 MachineID的变化(基于用户)。
我想知道在我从查询中存储了所有结果之后但是在添加到表之前我是否可以执行OrderByDescending
。
我知道由于内部foreach
循环它不会发生,但是当我尝试这样做时:
foreach (int id in machineID)
{
A = OnDemandHistory.Where(c => c.MachineID == id).OrderByDescending(c => c.ODHisDate);
// I want to Order all results before writing to the table
}
foreach(var entry in A)
{
// I add to a table based on all entries found in A
}
我得到一个局部变量A未初始化的错误,
我将如何解决这个问题?
提前致谢
答案 0 :(得分:3)
使用val myVar1 = calculateStuff("") // myVar1 is String
val myVar2 = calculateStuff<String?>(null) // myVar2 is String?
语句可以更简单地完成:
Contains
答案 1 :(得分:1)
导致错误是因为第一个查询的最终结果只生成machineID
的最后一个值的结果,这可能导致空结果或A的未初始化值,因此需要初始化A 。另外,我怀疑A可能是一个简单的列表。
您需要以下内容:
A = new List<OnDemandHistory>();
foreach (int id in machineID)
{
A.AddRange(OnDemandHistory
.Where(c => c.MachineID == id).OrderByDescending(c => c.ODHisDate).ToList());
}
// order A here
然后运行第二个循环,检查A是否有行。但是,我怀疑在LINQ中有更聪明的方法将查询的machineID
部分连接成一个LINQ语句。