传递给方法的匿名对象上的“对象不包含属性定义”

时间:2018-09-26 13:46:52

标签: c# linq object

我有一个查询dbContext并根据返回的内容创建匿名类型的方法:

<note>

然后,我创建一个新的匿名类型列表,以添加额外的属性(“ ExtDescription”),该属性是由其他方法根据原始对象的属性组成的字符串:

var items = (from l in db.JDE_Logs
                                 join u in db.JDE_Users on l.UserId equals u.UserId
                                 join t in db.JDE_Tenants on l.TenantId equals t.TenantId
                                 where l.TenantId == tenants.FirstOrDefault().TenantId && l.Timestamp >= dFrom && l.Timestamp <= dTo
                                 orderby l.Timestamp descending
                                 select new
                                 {
                                     LogId = l.LogId,
                                     Timestamp = l.Timestamp,
                                     TenantId = t.TenantId,
                                     TenantName = t.TenantName,
                                     UserId = l.UserId,
                                     UserName = u.Name + " " + u.Surname,
                                     Descripiton = l.Description,
                                     OldValue = l.OldValue,
                                     NewValue = l.NewValue
                                 });

我的问题是我想将此代码(创建额外的属性)移动到另一个方法,因此我可以从主代码中多次调用它。我想到了这样的东西:

var nItems = new List<object>();
                                //try to get more details
                                foreach (var i in items)
                                {
                                    string desc = GetLogDescription(i.NewValue, i.OldValue, i.Descripiton);
                                    var nItem = new
                                    {
                                        LogId = i.LogId,
                                        Timestamp = i.Timestamp,
                                        TenantId = i.TenantId,
                                        TenantName = i.TenantName,
                                        UserId = i.UserId,
                                        UserName = i.UserName,
                                        Descripiton = i.Descripiton,
                                        OldValue = i.OldValue,
                                        NewValue = i.NewValue,
                                        ExtDescription = desc
                                    };
                                    nItems.Add(items);
                                }

不幸的是,它无法构建,因为对象“ i”不包含属性的定义,例如i.OldValue。这是完全相同的代码,但是只是放入外部方法中就使它坏了。我最好的猜测是应该将List传递给该方法,而不是其他。我检查了一下,原始项目的类型为System.Data.Entity.Infrastructure.DbQuery,但它无处可寻。

0 个答案:

没有答案
相关问题