簡體   English   中英

LINQ to實體動態過濾器(導航和2個詳細實體)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM