linqtosql维护列表的顺序
linqtosql maintain ordering of list
var convertedIds = ids.Select(id => Convert.ToInt32(id)).ToList();
return this.context.SupportedCharacterSets
.Where(av => converteIds.Contains(av.id))
.Select(av => new AsideItem
{
Id = av.id.ToString(CultureInfo.InvariantCulture),
Name = av.name
}).ToList();
convertedIds 是一个整数列表:{ 2, 1 }
- 例如
当我从数据库中选择时,它命令它 1,2
(这是预期的),有没有办法不这样做?我看到你可以做一个 Dictionary
对象,但是不确定这是否矫枉过正?
您可以在 OrderBy
中使用 List.IndexOf
:
return this.context.SupportedCharacterSets
.Where(av => converteIds.Contains(av.id))
.AsEnumerable() // to get Linq-To-Objects
.OrderBy(av => converteIds.IndexOf(av.id))
.Select(av => new AsideItem
{
Id = av.id.ToString(CultureInfo.InvariantCulture),
Name = av.name
})
.ToList();
var convertedIds = ids.Select(id => Convert.ToInt32(id)).ToList();
return this.context.SupportedCharacterSets
.Where(av => converteIds.Contains(av.id))
.Select(av => new AsideItem
{
Id = av.id.ToString(CultureInfo.InvariantCulture),
Name = av.name
}).ToList();
convertedIds 是一个整数列表:{ 2, 1 }
- 例如
当我从数据库中选择时,它命令它 1,2
(这是预期的),有没有办法不这样做?我看到你可以做一个 Dictionary
对象,但是不确定这是否矫枉过正?
您可以在 OrderBy
中使用 List.IndexOf
:
return this.context.SupportedCharacterSets
.Where(av => converteIds.Contains(av.id))
.AsEnumerable() // to get Linq-To-Objects
.OrderBy(av => converteIds.IndexOf(av.id))
.Select(av => new AsideItem
{
Id = av.id.ToString(CultureInfo.InvariantCulture),
Name = av.name
})
.ToList();