如何按字母顺序对列表视图进行排序?

时间:2017-08-29 09:52:17

标签: c# sorting listview xamarin

所以我有这个listview,我想按字母顺序排序。有人知道你能做到吗?如果你知道如何做到这一点,那么告诉我代码。寻求帮助!!

这是我的Xaml.cs代码:

namespace App2
{
public partial class MainPage : ContentPage
{
    List<Kontakter> kontakter = new List<Kontakter>
    {
        new Kontakter
        {
        Fuldenavn = "Anja Birkelund (ANBI)",
        Tlfnr = 24212504
        },
        new Kontakter
        {
            Fuldenavn = "Morten Jensen (MOJ)",
            Tlfnr = 24838149
        },
        new Kontakter
        {
            Fuldenavn = "Thomas Duvall Pedersen (TPD)",
            Tlfnr = 61706767
        },
        new Kontakter
        {
            Fuldenavn = "Svend-Erik Dejbjerg (SD)",
            Tlfnr = 20116644
        }
    };

    public MainPage()
    {
        InitializeComponent();

        NameslistView.ItemsSource = kontakter;
    }

    private void MainSearchBar_SearchButtonPressed(object sender, EventArgs e)
    {
        var keyword = MainSearchBar.Text;
        NameslistView.ItemsSource = kontakter.Where(obj => (obj.Fuldenavn.Contains(keyword) || obj.Tlfnr.ToString().Contains(keyword)));
    }
}
}

这是我的Xmal代码:

    

<ListView x:Name="NameslistView" HasUnevenRows="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding Fuldenavn}" />
                <Label Text="{Binding Tlfnr}" />
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

2 个答案:

答案 0 :(得分:0)

您可以使用LINQ方法OrderBy

  

按照a的升序对序列的元素进行排序   键。

var sorted = kontakter.OrderBy(x => x.Fuldenavn)
                      .ToList();

请阅读101 LINQ-Samples以获取更多信息。

修改

public MainPage()
{
    InitializeComponent();

    //Order the contacts
    var sorted = kontakter.OrderBy(x => x.Fuldenavn)
                          .ToList();

    //Set the ItemsSource with the ordered contacts
    NameslistView.ItemsSource = sorted;
}

答案 1 :(得分:0)

使用排序并提供条件

kontakter.Sort((x,y)=&gt; x.Fuldenavn [0] .CompareTo(y.Fuldenavn [0]));

其中[0]代表Fuldenavn的第一个字母,以便按字母顺序排序。