C# LINQ列表覆盖以前的值,而不是设置新值
我有一个LINQ查询,它输出到列表,它工作正常,除了每次运行时都会更新原始记录,而不是创建新记录。 每次运行此代码时,data.EventID都会更改,因此我希望每个记录都显示在列表中 守则:C# LINQ列表覆盖以前的值,而不是设置新值,c#,list,linq,C#,List,Linq,我有一个LINQ查询,它输出到列表,它工作正常,除了每次运行时都会更新原始记录,而不是创建新记录。 每次运行此代码时,data.EventID都会更改,因此我希望每个记录都显示在列表中 守则: foreach(var data in vehicleqry) { bool inUK = boundryChecker.IsLongLatInUK((double)data.declatfloat, (double)data.declongfloat); if (inUK == true)
foreach(var data in vehicleqry)
{
bool inUK = boundryChecker.IsLongLatInUK((double)data.declatfloat, (double)data.declongfloat);
if (inUK == true)
{
var qryevent = (from e in db.events
where e.eventID == data.EventID
select new
{
e.eventID,
e.sysdatetime,
e.vehicleID
}).ToList();
}
{
我还有一个带有EventID的列表,如果我可以使用它来查询列表?
我认为您真正想要的是只运行一个查询,而不是循环。您可以通过使用
Contains
方法来执行此操作:
var vehicleqry = ...;
// Get all of the individual event IDs for entries that are "inUK"
var vehicleEventIds = vehicleqry
.Where(ve => boundryChecker
.IsLongLatInUK((double)ve.declatfloat, (double)ve.declongfloat)
.Select(ve => ve.EventID);
// Get all the matching events
var qryevent = (from e in db.events
where vehicleEventIds.Contains(e.eventID)
select new
{
e.eventID,
e.sysdatetime,
e.vehicleID
}).ToList();
我认为你真正想要的是只运行一个查询,而不是循环。您可以通过使用
Contains
方法来执行此操作:
var vehicleqry = ...;
// Get all of the individual event IDs for entries that are "inUK"
var vehicleEventIds = vehicleqry
.Where(ve => boundryChecker
.IsLongLatInUK((double)ve.declatfloat, (double)ve.declongfloat)
.Select(ve => ve.EventID);
// Get all the matching events
var qryevent = (from e in db.events
where vehicleEventIds.Contains(e.eventID)
select new
{
e.eventID,
e.sysdatetime,
e.vehicleID
}).ToList();
你能更好地解释你的问题吗?重置索引[0]值是什么意思重置索引是什么意思?什么是索引[0]?这段代码中不存在。因此,每次运行它时,它都会替换第一条记录,而不是创建一条新记录。只有当数据库中有任何项且它们的
eventID
与数据相同时,才能将qryevent
初始化为列表。你能确认你的数据库中是否有任何数据吗?你试过调试你的代码吗?有数据,它被分配到列表中。它每次只是替换以前的数据,而不是插入新记录。您能更好地解释您的问题吗?重置索引[0]值是什么意思重置索引是什么意思?什么是索引[0]
?这段代码中不存在。因此,每次运行它时,它都会替换第一条记录,而不是创建一条新记录。只有当数据库中有任何项且它们的eventID
与数据相同时,才能将qryevent
初始化为列表。你能确认你的数据库中是否有任何数据吗?你试过调试你的代码吗?有数据,它被分配到列表中。它每次只是替换以前的数据,而不是插入新记录。糟糕的是,我忘记了一行代码,inUK部分对于过滤EventID很重要。因此,只有当这是真的,我才想将记录添加到列表中。(用代码更新了帖子)真的吗?这就是为什么您首先要写一个好问题,因为我现在已经浪费了编写上述代码的时间。无论如何,这仍然可以通过使用我添加的Where
子句过滤列表来完成。糟糕的是,我忘记了一行代码,inUK部分对于过滤EventID很重要。因此,只有当这是真的,我才想将记录添加到列表中。(用代码更新了帖子)真的吗?这就是为什么您首先要写一个好问题,因为我现在已经浪费了编写上述代码的时间。无论如何,这仍然可以通过使用我添加的Where
子句过滤列表来完成。