【问题标题】:Linq Result into Observable collection throws parsing exceptionLinq Result into Observable 集合引发解析异常
【发布时间】:2020-03-19 19:07:36
【问题描述】:

我创建了一个可观察的集合

 public ObservableCollection<DatagGridCollection> combine_audit_final_collection { get; set; }

我试图通过 linq 结果填充

  var d =  (from p in Auditcollectiondata
                           from c in Finalcollectiondata
                           where c.sno == p.sno
                           select new
                            {
                                p.sno,
                                p.AuditID,
                                p.claimnumber,
                                p.QueryID,
                                p.DateWorked,
                                p.UserID,
                                p.Line,
                                p.Dos,
                                p.CPT,
                                p.Units,
                                p.amtBilled,
                                p.RecoupUnit,
                                p.reocupamts,
                                p.ScioNote,
                                p.Linelevelstatus_valuetext,
                                p.providerNote,
                                c.ID_finalstatus,
                                c.FinalStatus
                     });

连接工作正常,但是当我尝试将结果插入可观察集合时。我遇到了投射错误。

    combine_audit_final_collection = new ObservableCollection<DatagGridCollection>((ObservableCollection<DatagGridCollection>) d);

combine_audit_final_collection 将绑定到数据网格中。虽然没有编译错误,但我在执行时遇到了运行时解析异常。

更新:我尝试使用 sno 加入两个可观察集合,并将结果插入另一个可观察集合“combine_audit_final_collection”。如果我的方法是错误的,请让我知道任何其他方法。

public class DatagGridCollection
{
   public bool update { get; set; }
   public int sno { get; set; }
   public string AuditID { get; set; }
   public string claimnumber { get; set; }
   public string QueryID { get; set; }
   public DateTime DateWorked { get; set; }
   public string UserID { get; set; }
   public string Line { get; set; }
   public string Dos { get; set; }
   public string CPT { get; set; }
   public string Units { get; set; }
   public string amtBilled { get; set; }
   public string RecoupUnit { get; set; }
   public string reocupamts { get; set; }
   public string ScioNote { get; set; }
   public string Linelevelstatus_valuetext { get; set; }
   public string providerNote { get; set; }
   public int final_status_sno { get; set; }
   public string Finalstatus { get; set; }
}

【问题讨论】:

  • 您能分享您遇到的确切错误吗? d是匿名类型的集合,我认为不能转换成ObservableCollection&lt;DatagGridCollection&gt;
  • 是的,正如你所说,我尝试了大部分解决方案,但我得到了错误,比如无法将匿名类型转换为可观察集合。我得到的错误是 xamlparserexception 当我尝试将值分配给 combine_audit_final_collection 时发生此异常。如果我的方法有任何解决方法,请告诉我。
  • 您可能想使用其他类,然后是 DataGridCollection 类。

标签: c# linq


【解决方案1】:

您确定您的 ObservableCollection 是 DataGridCollections 的集合吗?你收藏的每个元素都是DataGridCollection吗?

如果不是,其实是MyType的集合,把下面的DataGridCollection换成MyType

无论如何,如果您在调试器中检查对象d 的类型,您会注意到它不是IEnumerable&lt;DatagGridCollection&gt;

只需将您的代码更改为:

select new DataGridCollection()
{
   p.sno,
   ...

如果你以后想查出这种错误的原因,我的建议是不要过多地使用var这个词,也不要一次做太多的陈述。

IEnumerable<DataGridCollection> d = ...
    Select new DataGridCollection
    {
        ...
    };

combine_audit_final_collection = new ObservableCollection<DatagGridCollection>(d);

查找错误会容易得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-20
    • 2012-10-29
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多