我需要在对象和列表之间进行比较。 列表包含属性“ 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();
答案 0 :(得分:0)
这是因为AppareilsReparations
不是IList
的一种类型,因此您的转换将始终失败IList appareil = (IList)arp;
。您可能想做以下事情;只是与Num_dossier
类型的AppareilsReparations
字段进行比较
var result = droit_utilisateur.Where(x => x.nom_colonne == arp.Num_dossier).ToList();
答案 1 :(得分:0)
我发现了问题,我将代码发布给所有人:
List<Droits> droit_utilisateur = GetDroits(username);
Type myType = e.GetType();
IList<PropertyInfo> props = new List<PropertyInfo>(myType.GetProperties());
foreach (PropertyInfo prop in e.GetType().GetProperties())
{
object propValue = prop.Name;
if (droit_utilisateur.Any(s => s.nom_colonne.Contains(prop.Name/*, StringComparison.OrdinalIgnoreCase)*/) == false))
{
prop.SetValue(e, Convert.ChangeType(null, prop.PropertyType), null);
}
}
return e;