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();