[英]LINQ to Entity dynamic Filter (Navigation and 2 Detail Entities)
我很困惑,已經受傷了(頭->牆)。 我試圖重寫我的問題,也許會更好。
xaml:
<Grid Background="{DynamicResource {x:Static SystemColors.ActiveCaptionBrushKey}}" ShowGridLines="True" DataContext="{StaticResource hOTYearViewSource}" >
<xctk:WatermarkTextBox x:Name="Txt_Material" Height="30" Width="100" Margin="340,30,0,0" TextChanged="MaterialFilter_TextChanged" HorizontalAlignment="Left" VerticalAlignment="Top" Watermark="Material Filter"></xctk:WatermarkTextBox>
<xctk:WatermarkTextBox x:Name="Txt_Nr1" Height="30" Width="100" Margin="340,60,0,0" TextChanged="MaterialFilter_TextChanged" HorizontalAlignment="Left" VerticalAlignment="Top" Watermark="Nr1 Filter"></xctk:WatermarkTextBox>
<xctk:WatermarkTextBox x:Name="Txt_Nr2" Height="30" Width="100" Margin="450,60,0,0" TextChanged="MaterialFilter_TextChanged" HorizontalAlignment="Left" VerticalAlignment="Top" Watermark="Nr2 Filter"></xctk:WatermarkTextBox>
<xctk:WatermarkTextBox x:Name="Txt_Nr3" Height="30" Width="100" Margin="340,90,0,0" TextChanged="MaterialFilter_TextChanged" HorizontalAlignment="Left" VerticalAlignment="Top" Watermark="Nr3 Filter"></xctk:WatermarkTextBox>
<xctk:WatermarkTextBox x:Name="Txt_Nr4" Height="30" Width="100" Margin="450,90,0,0" TextChanged="MaterialFilter_TextChanged" HorizontalAlignment="Left" VerticalAlignment="Top" Watermark="Nr4 Filter"></xctk:WatermarkTextBox>
<xctk:WatermarkTextBox x:Name="Txt_Nr5" Height="30" Width="100" Margin="340,120,0,0" TextChanged="MaterialFilter_TextChanged" HorizontalAlignment="Left" VerticalAlignment="Top" Watermark="Nr5 Filter"></xctk:WatermarkTextBox>
<xctk:WatermarkTextBox x:Name="Txt_Nr6" Height="30" Width="100" Margin="450,120,0,0" TextChanged="MaterialFilter_TextChanged" HorizontalAlignment="Left" VerticalAlignment="Top" Watermark="Nr6 Filter"></xctk:WatermarkTextBox>
<ListView x:Name="hOTYearListView" DisplayMemberPath="Year_ID" ItemsSource="{Binding}" Margin="10,30,0,0" SelectedValuePath="Year_ID" SelectionMode="Single" Width="100" Height="150" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<ListView x:Name="hOTOrderListView" ItemsSource="{Binding Source={StaticResource hOTYearHOTOrderViewSource}}" Margin="150,30,0,0" SelectionMode="Single" HorizontalAlignment="Left" VerticalAlignment="Top" Width="170" Height="150">
<ListView.View>
<GridView>
<GridViewColumn Header="Bestellnummer" DisplayMemberBinding="{Binding Bestellnummer}" />
<GridViewColumn Header="Positionen" DisplayMemberBinding="{Binding Positionen}" />
</GridView>
</ListView.View>
</ListView>
<ListView x:Name="orderPosListView" ItemsSource="{Binding Source={StaticResource hOTYearHOTOrderOrderPosViewSource}}" VirtualizingPanel.IsVirtualizing="True"
Margin="10,200,10,10" SelectionMode="Single" ItemContainerStyle="{StaticResource alternatingStyle}" AlternationCount="2">
<ListView.View>
<GridView>
<GridViewColumn Header="Position" DisplayMemberBinding="{Binding Position}" />
<GridViewColumn Header="Nr1" DisplayMemberBinding="{Binding Nr1}"/>
<GridViewColumn Header="Nr2" DisplayMemberBinding="{Binding Nr2}" />
<GridViewColumn Header="Nr3" DisplayMemberBinding="{Binding Nr3}" />
<GridViewColumn Header="Nr4" DisplayMemberBinding="{Binding Nr4}" />
<GridViewColumn Header="Nr5" DisplayMemberBinding="{Binding Nr5}" />
<GridViewColumn Header="Nr6" DisplayMemberBinding="{Binding Nr6}" />
<GridViewColumn Header="Benennnung" DisplayMemberBinding="{Binding Benennnung}" />
<GridViewColumn Header="Material" DisplayMemberBinding="{Binding Material}" />
<GridViewColumn Header="Auftrag" DisplayMemberBinding="{Binding Auftrag}" />
<GridViewColumn Header="Härtegrad" DisplayMemberBinding="{Binding Härtegrad}" />
<GridViewColumn Header="Stück" DisplayMemberBinding="{Binding Stk}" />
<GridViewColumn Header="Eht" DisplayMemberBinding="{Binding Eht}" />
<GridViewColumn Header="Ri" DisplayMemberBinding="{Binding Ri}" />
<GridViewColumn Header="Gewicht in Kg" DisplayMemberBinding="{Binding Gewicht}" />
<GridViewColumn Header="Kosten" DisplayMemberBinding="{Binding kosten}" />
<GridViewColumn Header="Reale Kosten" DisplayMemberBinding="{Binding kostenreal}" />
<GridViewColumn Header="Lieferdatum" DisplayMemberBinding="{Binding Lieferdatum, StringFormat='dd.MM.yyyy'}" />
<GridViewColumn Header="Termin" DisplayMemberBinding="{Binding Termin, StringFormat='dd.MM.yyyy'}" />
<GridViewColumn Header="geliefert" DisplayMemberBinding="{Binding geliefert, StringFormat='dd.MM.yyyy'}" />
<GridViewColumn Header="Rechnung" DisplayMemberBinding="{Binding Rechn, StringFormat='dd.MM.yyyy'}" />
<GridViewColumn Header="Bemerkung" DisplayMemberBinding="{Binding Bemerkung}" />
<GridViewColumn Header="Link">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink NavigateUri="{Binding Path=Link}" RequestNavigate="Hyperlink_OnRequestNavigate">
<TextBlock Text="{Binding Path=Link}"/>
</Hyperlink>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<Button x:Name="Btn_Back10" Content="Zurück" Height="25" Width="100" Click="Btn_Back_Click" HorizontalContentAlignment="Center" VerticalContentAlignment="Top" VerticalAlignment="Top" HorizontalAlignment="Left" FontSize="16" />
</Grid>
我的實體使用的是這樣的: https : //msdn.microsoft.com/en-us/library/mt715492.aspx
我使用3個列表視圖和3個實體
我認為一切正常
但我必須使用過濾器
還有我的問題。
我可以過濾我的主實體,但它對我有用,但是如果我嘗試過濾我的詳細信息,它將無法工作。
我嘗試用:
var query = (from HY in dataEntities.HOTYear
join HO in dataEntities.HOTOrder on HY.Year_ID equals HO.YearID
join OP in dataEntities.OrderPos on HO.Order_ID equals OP.OrderID
where (OP.Material == "2842")
select HY).ToList().Distinct();
我選對了年份,可以導航,但是未過濾所有詳細信息
我嘗試這樣的事情:
var query = dataEntities.HOTYear.Select(y => new
{
y.Year_ID,
HOTOrder = y.HOTOrder.Select(o => new
{
o.Bestellnummer,
o.Positionen,
OrderPos = o.OrderPos.Where(p => p.Material == Txt_Material.Text)
})
});
但只有我的最后一個細節被過濾,導航仍然有效。
我的問題 :如何對所有過濾器使用我的過濾器,並為所有7個過濾器選項創建動態過濾器?
你兩種方式:
1-使用這樣的linq查詢:(從context.table中的t,其中t.field ==“ something”選擇t).tolist();
2-使用linq方法:context.table.where(w => w.field ==“ something”)。tolist();
如你所願
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.