C#列表按两列排序

Unk*_*der 16 c# sorting

我有一个C#自定义对象列表,我需要按两个不同的变量排序,一个是布尔值,另一个是字符串.我可以按任何一个标准排序,但我无法弄清楚如何将它们组合起来.排序应首先是所有布尔值(CheckedIn),然后是每个值的最后一个名称.现在我用

result.Sort((x, y) => string.Compare(x.CheckedIn.ToString(), y.CheckedIn.ToString()));
result.Sort((x, y) => string.Compare(x.LastName, y.LastName));
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能将我的结果结合起来

CheckedIn-Name
No - Aames
No - Smith
Yes - Barnes
Yes - Peters
Run Code Online (Sandbox Code Playgroud)

Tar*_*ang 31

使用linq.

如果你有列表L的对象

public class temp
{
public bool x;
public string y;
}
Run Code Online (Sandbox Code Playgroud)

然后使用:

L.orderby(a=>a.x).thenby(a=>a.y);
Run Code Online (Sandbox Code Playgroud)

你可以随意链接它.

  • 在他的情况下,它将是result.OrderBy(x => x.CheckedIn).ThenBy(x => x.LastName); (3认同)

Ser*_*ier 21

result.Sort((x,y) => x.CheckedIn==y.CheckedIn ? 
  string.Compare(x.LastName, y.LastName) : 
  (x.CheckedIn ? -1 : 1) );
Run Code Online (Sandbox Code Playgroud)


lah*_*rah 17

var sortResult = result.OrderBy(a => a.CheckedIn).ThenBy(a => a.LastName).ToList();
Run Code Online (Sandbox Code Playgroud)