首页 > 解决方案 > 当列表中不存在值时如何比较对象和List<>和object.value null

问题描述

我需要在我的对象和列表之间进行比较。列表包含属性“nom_colonne”,它由查询填充,结果是属性列表(与我的对象 AppareilsReparations 相同)

例如:如果 droit_utilisateur.nom_colonne = "Num_dossier" 所以我将值保留在 arp.num_dossier

但是,如果我的列表 droit_utilisateur 没有这个值: arp.num_dossier 将为空。

我想用 System.Collections.IList 投射我的对象,但无法投射。我有一个错误。

public class AppareilsReparations


{

    public string Num_dossier { get; set; }
    //public string reference_aff { get; set; }
    public int Id { get; set; }
    public Guid Uid { get; set; }
    public string ref_sav { get; set; }

    public CodeDefaut codedefaut { get; set; }
    public CodeSymptome codesymptome { get; set; }
}

public class Droits
{
    public int id { get; set; }
    public int utilisateur_id { get; set; }
    public string nom_table { get; set; }
    public string nom_colonne { get; set; }
}


AppareilsReparations arp = db.Query<AppareilsReparations>
                   ("select * from v_appareils_reparations where ref_sav_client =@ref_sav", new { ref_sav }).SingleOrDefault();

List<Droits> droit_utilisateur = GetDroits("admin");
            //var appareil = new List<AppareilsReparations>();

            IList appareil = (IList)arp;

            var result = droit_utilisateur.Where(x => !appareil.Contains(x.nom_colonne)).ToList();

标签: c#listclassobjectcompare

解决方案


那是因为AppareilsReparations不是一种类型,IList因此您的演员阵容总是会失败IList appareil = (IList)arp;。可能你想做下面的事情;只是与类型的Num_dossier字段进行比较AppareilsReparations

var result = droit_utilisateur.Where(x => x.nom_colonne == arp.Num_dossier).ToList();

推荐阅读