Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 设置实体的值_Linq_Entity Framework_Entity Framework 4_Entity Framework 4.1 - Fatal编程技术网

Linq 设置实体的值

Linq 设置实体的值,linq,entity-framework,entity-framework-4,entity-framework-4.1,Linq,Entity Framework,Entity Framework 4,Entity Framework 4.1,我有一个未映射到数据库的模块,用于生成报告 public class Report { public int USERID { get; set; } public DateTime DateToCal { get; set; } public string Name { get; set; } public string Position { get; set; } public TimeSpan? Intime { get; set; } pu

我有一个未映射到数据库的模块,用于生成报告

public class Report
{
    public int USERID { get; set; }
    public DateTime DateToCal { get; set; }
    public string Name { get; set; }
    public string Position { get; set; }
    public TimeSpan? Intime { get; set; }
    public TimeSpan?  OutTime { get; set; }
}
我生成一个查询并填充报表的一些属性(USERID、DateToCal、Name、Position、Intime),其余属性OutTime为null

var query = .....;
现在,我想要的是查询的每个项(类型为Report)将OutTime的值设置为

foreach(var items in query)
            {
                var outtime= from x in con.CHECKINOUTs
                              where x.USERID == items.USERID && EntityFunctions.TruncateTime(x.CHECKTIME) == EntityFunctions.TruncateTime(items.DateToCal && x.CHECKTYPE == "O"
                              select x.CHECKTIME
                              .Single();
                items.OutTime= outtime.TimeOfDay;
            }
现在的问题是,在鼠标悬停到
项上。OutTime
在foreach中出现值,但如果我从foreach中取出鼠标悬停到
query
中,仍然有
OutTime为null
。没有我设置的值。是否可以这样设置实体的值。或者我有什么问题

谢谢。

问题是“项目”仅在foreach循环中可用,并且在每次迭代结束时被丢弃。如果要持久化该值,可以使用for循环,直接在可枚举的“查询”中设置该项:

for(int index=0;index
首先尝试使用方法first()执行linq查询:


请注意这一点,因为foreach旨在迭代一个容器,确保每个项目只访问一次,而不更改容器,以避免严重的副作用。

我尝试了这一点,但在
query[index]
上出现了错误,表示“无法使用[]应用索引”对于“System.Linq.IQueryable”类型的表达式,变量查询的类型是什么?@andrey gubal,我也尝试使用.First(),但出现了相同的问题。
for(int index = 0; index < query.Length; ++index;)
            {
                var outtime= from x in con.CHECKINOUTs
                              where x.USERID == items.USERID &&         
                              EntityFunctions.TruncateTime(x.CHECKTIME) == 
                              EntityFunctions.TruncateTime(items.DateToCal && x.CHECKTYPE == "O"
                              select x.CHECKTIME
                              .Single();
                query[index].OutTime= outtime.TimeOfDay;
            }
foreach(var items in query)
            {

                var outtime= (from x in con.CHECKINOUTs
                              where x.USERID == items.USERID && 
                              EntityFunctions.TruncateTime(x.CHECKTIME) 
                               == EntityFunctions.TruncateTime(items.DateToCal && x.CHECKTYPE == "O"
                               select x.CHECKTIME).First();

                items.OutTime = outtime.TimeOfDay;
            }