如果只有一条记录返回,linq输出是错误的c#
以下代码将从我的如果只有一条记录返回,linq输出是错误的c#,c#,entity-framework,linq,C#,Entity Framework,Linq,以下代码将从我的设备表返回新插入的记录id var newIds = context.Devices.Take(deviceDataList.Count) .OrderByDescending(t => t.Id) .Select(t => t.Id) .ToList(); 如果DeviceCatalist.Count大于1则工作正常 但当它只有一个时,它首先返回
设备
表返回新插入的记录id
var newIds = context.Devices.Take(deviceDataList.Count)
.OrderByDescending(t => t.Id)
.Select(t => t.Id)
.ToList();
如果DeviceCatalist.Count
大于1
则工作正常
但当它只有一个时,它首先返回的是错误的
id
,而不是最新插入的。先下订单,然后接受Take
按记录在集合中的顺序检索记录(可能只是在磁盘或数据库的任何其他推理中)。如果您想确保它是通过Id
进行的,那么就这样做
var result = context.Devices.OrderByDesending(t => Id)
.Take(deviceDataList.Count)
.Select(t => t.Id);
先点菜,然后吃
Take
按记录在集合中的顺序检索记录(可能只是在磁盘或数据库的任何其他推理中)。如果您想确保它是通过Id
进行的,那么就这样做
var result = context.Devices.OrderByDesending(t => Id)
.Take(deviceDataList.Count)
.Select(t => t.Id);
您正在呼叫
Take
,然后再订购。尝试将其更改为降序(t=>t.Id)。否则,您会说“我将按您喜欢的顺序取前N个值,然后再按这N个值进行排序”。您会在下单之前调用take
。尝试将其更改为降序(t=>t.Id)。否则,您会说“我将按照您喜欢的顺序取前N个值,然后对这N个值进行排序”。这是答案,先对列表进行排序,然后再进行排序。这是答案,先对列表进行排序,然后进行排序。