【问题标题】:Get the Value of WPF Listview rows and compare them with database field using Linq query获取 WPF Listview 行的值并使用 Linq 查询将它们与数据库字段进行比较
【发布时间】:2016-04-29 10:02:12
【问题描述】:

我想将我的数据库中的 ECH_INTITULE 与 listview 行的值进行比较,但我的问题是我无法访问我的 Linq 查询中的 Listview 项目

这是我的 Listview 的 Xaml 代码:

<ListView x:Name="listView" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding}" DataContext="query" HorizontalAlignment="Left" Height="430" Margin="24,47,0,0" VerticalAlignment="Top" Width="940" >
        <ListView.View>
            <GridView x:Name="gridView">
                <GridViewColumn Header="Fournisseur" DisplayMemberBinding="{Binding fournisseur}" Width="280"/>
                <GridViewColumn Header ="Adresse Mail" DisplayMemberBinding="{Binding email}" Width="270"/>
                <GridViewColumn Header ="Date" DisplayMemberBinding="{Binding date}" Width="150"/>
                <GridViewColumn Header="Fichier CSV" DisplayMemberBinding="{Binding xxx}" Width="105"/>
                <GridViewColumn Header="Fichier PDF" DisplayMemberBinding="{Binding xxx}" Width="105"/>
            </GridView>
        </ListView.View>
    </ListView>

这是我的 C# 代码:

//Generate CSV Files for each item in the Listview
        CsvFileDescription outpCsvFileDescription = new CsvFileDescription
        {
            SeparatorChar = ',',
            FirstLineHasColumnNames = true
        };

        for (int i = 0; i < listView.Items.Count; i++)
        {
            var infoEcheances = from f in db.F_ECHEANCES
                                //where f.ECH_Intitule == ???
                                select new { f.ECH_Intitule, f.ECH_DateEch, f.CG_Num, f.ECH_Piece, f.ECH_RefPiece, f.ECH_Montant, f.ECH_Libelle };


            CsvContext cc = new CsvContext();
            string myPath = @"C:\Users\DefaultAccount\Desktop\Projet Top Of Travel\FichiersCSV\";
            string filename = string.Format("Facture{0}.csv", i);
            string finalPath = System.IO.Path.Combine(myPath, filename);
            cc.Write(infoEcheances, finalPath, outpCsvFileDescription);
        }

【问题讨论】:

    标签: c# wpf linq


    【解决方案1】:

    你不能像那样直接比较一行。 请尝试以下代码。

    //Generate CSV Files for each item in the Listview
        CsvFileDescription outpCsvFileDescription = new CsvFileDescription
        {
            SeparatorChar = ',',
            FirstLineHasColumnNames = true
        };
    
        for (int i = 0; i < listView.Items.Count; i++)
        {
            var infoEcheances = from f in db.F_ECHEANCES
                                where f.ECH_Intitule == listView.Items[i].f.ECH_Intitule
                                select new { f.ECH_Intitule, f.ECH_DateEch, f.CG_Num, f.ECH_Piece, f.ECH_RefPiece, f.ECH_Montant, f.ECH_Libelle };
    
    
            CsvContext cc = new CsvContext();
            string myPath = @"C:\Users\DefaultAccount\Desktop\Projet Top Of Travel\FichiersCSV\";
            string filename = string.Format("Facture{0}.csv", i);
            string finalPath = System.IO.Path.Combine(myPath, filename);
            cc.Write(infoEcheances, finalPath, outpCsvFileDescription);
        }
    

    【讨论】:

    • 我有一个错误:对象不包含 f 的定义。所以它不接受参数 ECH_INTITULE 在:listview,Items[1].f.ECH_INTITULE
    • 我提供的样本。您必须根据您的要求将其替换为您的项目名称
    猜你喜欢
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2011-12-31
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多