我的应用程序中有两个DatePicker
,我必须根据用户选择的日期(从日期 - 到目前为止)选择记录。下图显示了我Datepicker
的设计。我想显示succeddedtxtBox中成功进程的计数和failedtxtBox中失败进程的计数,具体取决于这些日期选择器中的日期选择
XAML
<Label>displays the succedded process</Label>
<Border BorderThickness="1" BorderBrush="Gray">
<TextBlock FontWeight="SemiBold" FontSize="12" x:Name="success_Txtbox" Width="50" VerticalAlignment="Stretch" TextAlignment="Right"/>
</Border>
<Label>displays the failed process</Label>
<Border BorderBrush="Gray" BorderThickness="1">
<TextBlock FontWeight="SemiBold" FontSize="12" x:Name="fail_Txtbox" Width="50" TextAlignment="Left"></TextBlock>
</Border>
我认为linq的逻辑是查询,看起来像这样。
var query_success = ( from x in this.db.Processes
where x.date = "from date" && x.date = "to date" &&
(x.Type == "completed")
select x).Count();
success_Txtbox.Text = query_success.ToString();
var query_failed = ( from x in this.db.Processes
where x.date = "from date" && x.date = "to date" &&
(x.Type == "Failed")
select x).Count();
failed_Txtbox.Text = query_failed.ToString();
UPDATE-XAML
<StackPanel Orientation="Horizontal">
<Label>From</Label>
<Border>
<DatePicker x:Name="fromDP"></DatePicker>
</Border>
<Label>To</Label>
<Border>
<DatePicker x:Name="toDP"></DatePicker>
</Border>
<Button Content="Go !" Height="23" Name="Go_Btn" Width="75" Click="Go_Btn_Click" />
</StackPanel>
更新回答
private void Go_Btn_Click(object sender, SelectionChangedEventArgs e)
{
var query_History = (this.db.Processes
.Where(x => x.Date >= fromDP.SelectedDate.Value && x.Date <= toDP.SelectedDate.Value));
var query_Success = query_History.Count(p => p.Type == "Complete");
var query_Failed = query_History.Count(p => p.Type == "Failed");
success_Txtbox.Text = query_Success.ToString();
fail_Txtbox.Text = query_Failed.ToString();
}
我尝试了上面的解决方案,但它在txtbox中显示为0。
答案 0 :(得分:3)
使用SelectedDate
属性从日期选择器中获取所选日期。假设您拥有DateTime?
变量fromDate
和toDate
中的值。然后使用基本查询并对其进行两次寻址以获取计数:
var processes = this.db.Processes
.Where(x => x.date >= fromDate.Value && x.date <= toDate.Value);
var query_success = processes.Count(p => p.Type == "completed");
var query_failed = processes.Count(p => p.Type == "Failed");
答案 1 :(得分:2)
基于你的linq,如果你这样做
where x.date = "from date" && x.date = "to date"
只有当两个日期选择器被选择到同一个日期时,你才会得到结果。
你想要的更多内容
where x.date >= datepicker_FromDate.selectedValue
&& x.date <= datepicker_ToDate.selectedValue