【发布时间】:2018-03-09 13:56:30
【问题描述】:
我有这个 Linq
var company = db.Companies.Where(x => x.id == Id).Select(x => new Company
{
Id = x.id,
Description = x.Description,
Website = x.Website,
Zip = x.Zip,
Actions = db.Actions.Where(a => a.UserCompanyId == Id).Select((a, index) => new CompanyActions
{
Id = index + 1,
Name = a.Name,
Duration = (int)a.Duration
}).ToList()
})
.FirstOrDefault();
我想获取操作 ID - 1,2,3,4,5,6,7,8......
但在这种情况下,索引不起作用。
Error - + $exception {"LINQ to Entities 无法识别方法'System.Linq.IQueryable
1 Select(System.Linq.IQueryable1, System.Linq.Expressions.Expression1[System.Func3])' 方法,并且此方法不能翻译成商店表达式。"} System.NotSupportedException
所有问题都是如何在操作中增加 (+1) Id?想看1-名字2-名字3-名字
这很好
var company = db.Companies.Where(x => x.id == Id).AsEnumerable().Select(x => new Company
{
Id = x.id,
Description = x.Description,
Website = x.Website,
Zip = x.Zip,
Actions = db.Actions.Where(a => a.UserCompanyId == Id).AsEnumerable().Select((a, index) => new CompanyActions
{
Id = index + 1,
Name = a.Name,
Duration = (int)a.Duration
}).ToList()
})
.FirstOrDefault();
【问题讨论】:
-
您正在尝试将
db.Actions.Where转换为委托(?),这就是我认为Actions 将持有的?这真的很时髦。你想做什么? -
自动递增 id 必须由数据库管理 否则多个软件会生成重复的 id(这会导致错误)
-
LINQ to Entities 查询被转换为 SQL。您不能使用没有等效 SQL 的表达式。 Enumerable.Select((IEnumerable<TSource>, Func<TSource, Int32, TResult>) 方法 在 加载数据后,例如
var items=query.AsEnumerable().Select((item,idx)=>...) -
Id - 它与数据库无关。这是我的身份证
标签: c# asp.net asp.net-mvc linq