如何解决SQLITE:今天返回 5 个最近的记录并格式化日期/时间
我有一个 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,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"/>
请参阅 here 以获取 .NET 中支持的可用日期格式字符串列表
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。