从 SQL Lite DB 动态创建 ListView 行

时间:2021-01-27 16:03:43

标签: c# sqlite listview xamarin

我希望创建一个应用程序,根据 SQL 数据库条目自动创建一个 ListView 行 - 最多 5 个 ListView 行。

人物类:

using SQLite;

namespace AppPeople
{
    public class Person
    {
        [PrimaryKey, AutoIncrement]
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

数据库.cs:

using System.Collections.Generic;
using System.Threading.Tasks;
using SQLite;

namespace AppPeople
{
    public class Database
    {
        readonly SQLiteAsyncConnection _database;

        public Database(string dbPath)
        {
            _database = new SQLiteAsyncConnection(dbPath);
            _database.CreateTableAsync<Person>().Wait();
        }

        public Task<List<Person>> GetPeopleAsync()
        {
            return _database.Table<Person>().ToListAsync();
        }

        public Task<int> SavePersonAsync(Person person)
        {
            return _database.InsertAsync(person);
        }
    }
}

MainPage.xaml:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="AppPeople.MainPage">
    <ListView x:Name="saved_properties_list">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Horizontal" 
                        HorizontalOptions="FillAndExpand"
                        Margin="20, 10, 20, 0" >
                        <Label Text="{Binding Name}" HorizontalOptions="StartAndExpand" />
                        <Label Text="{Binding Age}" />
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage>

MainPage.cs:

        protected override async void OnAppearing()
        {
            base.OnAppearing();
            saved_properties_list.ItemsSource = await MainPage.Database.GetPropertiesAsync();
        }


public Task> GetPropertiesAsync()
{
    return database.Table().ToListAsync();
}

我将如何更改此设置,以便根据最多包含 5 个 ListView 行的 SQL 数据库条目自动创建 ListView 行?谢谢。

1 个答案:

答案 0 :(得分:2)

使用 LINQ Take 限制结果数量

return _database.Table<Person>().Take(5).ToListAsync();