顶部多个匹配的项目我都可以包含的人多条记录清单:移动那里有一个列表
result =people.Select(p => new PersonDetail
{
Involvement = p._Discriminator,
FullName = p.BuildFullName(),
DateOfBirth = p.DateOfBirth != null ? p.DateOfBirth.Value.ToShortDateString() : string.Empty,
Race = MappingExtensions.MergeCodeAndText(p.RaceCode, p.RaceText),
Sex = MappingExtensions.MergeCodeAndText(p.SexCode, p.SexText),
Height = p.Height,
Weight = p.Weight != null ? p.Weight.ToString() : string.Empty,
EyeColor = MappingExtensions.MergeCodeAndText(p.EyeColorCode, p.EyeColorText),
HairColor = MappingExtensions.MergeCodeAndText(p.HairColor1Code, p.HairColor1Text),
//...
}).ToList();
我要订购通过参与式这个列表(被害人,犯罪嫌疑人,见证)。
我已经试过以下使用Remove
和Insert
:
foreach (var i in result.Where(i => i.Involvement.ToLower() =="suspect"))
{
result.Remove(i);
result.Insert(0, i);
}
return result;
在它作为我期待但在第二圈我得到抛出的异常的第一个循环。我怀疑有一些递归正在进行或抛出异常,因为它不断找到我在第一次传递中提升的记录,并且无法获取它。
我想执行一个循环而不仅仅是一个循环,因为可能有多个记录被标记为可疑。我需要将所有这些推广到证人或受害者之上。其他涉及订购无关。
例如:
Bob "suspect"
Jane"suspect"
Kenny "witness"
Joe "victim"
如何选择多条记录,并确保它们被放置在上面他人列表的顶部有什么建议?
感谢您的任何意见或建议
你可以使用linq的OrderBy方法。这里有一个答案,它显示了如何按自定义逻辑进行排序:http://stackoverflow.com/questions/3007470/custom-sort-logic-in-orderby-using-linq –
@AbdullahNehir将colleciton类型更改为IOrderedEnumerable并更新代码返回result.OrderBy(i => i.Involvement.ToLower()==“suspect”);不会更改列表中项目的排序。 – rlcrews
将结果的顺序设置为结果列表。刚刚出现的答案显示了我的意思。 –