SQLITE:Return 今天最近的 5 条记录,格式为 date/time

SQLITE: Return 5 most recent records today and format date/time

我有一个 Xamarin.Forms 应用程序,它有一个 ListView。我想用日期为今天的 5 个最新项目填充 ListView。如果少于 5 个项目,ListView 应该只为每个项目显示一行(例如,如果只有一个项目,ListView 应该只有一行)。

然后我想将日期格式转换为 mm/dd/yyyy(而不是 dd/mm/yyyy)并将时间更改为 12 小时格式。这可能吗?

public Task<List<Product>> GetProductAsync()
{
     DateTime todayDateTime = DateTime.Today;
     return _database.Table<Product>().OrderByDescending(x => x.ProductDateTime).Where(x.ProductDateTime.Date == DateTime.Today).Take(5).ToListAsync();
}
<ListView x:Name="recentProductList" SeparatorVisibility="None"
Grid.Row="1" Margin="20,0" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
            <ListView.ItemTemplate>
                <DataTemplate >
                    <ViewCell>
                        <Frame BackgroundColor="White" BorderColor="#F0F0F0" Padding="5" Margin="0,0,0,5" HasShadow="False">
                            <Grid HeightRequest="50" HorizontalOptions="FillAndExpand" VerticalOptions="Start">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Label Text="{Binding ProductDateTime}" TextColor="#757575" FontSize="12" VerticalOptions="Center" Margin="20,0"/>
                            </Grid>
                        </Frame>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
</ListView>
protected override async void OnAppearing()
{
     base.OnAppearing();
     recentProductList.ItemsSource = await App.Database.GetProductAsync();
}

我遇到的问题是:The name 'x' does not exist in the current context 声明的这一部分:Where(x.ProductDateTime.Date == DateTime.Today)。我无法检索到最近的记录。

如何检索包含今天日期的 5 条最新记录 - 然后格式化结果(采用 mm/dd/yyyy 和 12 小时格式)?

像这样修改您的查询

return _database.Table<Product>().OrderByDescending(x => x.ProductDateTime)
       .Where(y => y.ProductDateTime.Date == DateTime.Today).Take(5).ToListAsync();

要更改日期格式,请使用 StringFormat

<Label Text="{Binding ProductDateTime, StringFormat='{0:MM/dd/yyyy}'}" TextColor="#757575" FontSize="12" VerticalOptions="Center" Margin="20,0"/>

有关 .NET 支持的可用日期格式字符串的列表,请参阅 here