C# – 将匿名类型转换为observablecollection

C# – 将匿名类型转换为observablecollection,第1张

概述我有一个返回匿名类型的LINQ语句.我需要在Silverlight应用程序中将此类型设置为ObservableCollection.但是,最接近我可以得到它 列出myObjects; 谁能告诉我怎么做? ObservableCollection<MyTasks> visibleTasks = e.Result;var filteredResults = from visibleTask in v 我有一个返回匿名类型的liNQ语句.我需要在Silverlight应用程序中将此类型设置为ObservableCollection.但是,最接近我可以得到它

列出myObjects;

谁能告诉我怎么做?

ObservableCollection<MyTasks> visibleTasks = e.Result;var filteredResults = from visibleTask in visibleTasks                      select visibleTask;filteredResults = filteredResults.Where(p => p.DueDate == DateTime.Today);visibleTasks = filteredResults.ToList();  // This throws a compile time error

我如何从匿名类型转变为可观察的集合?

谢谢

解决方法 正如Ekin建议的那样,你可以编写一个通用方法来转换任何IEnumerable< T>进入ObservableCollection< T>.这比使用构造函数创建ObservableCollection的新实例有一个明显的优势 – C#编译器能够在调用方法时自动推断泛型类型参数,因此您不需要编写元素的类型.这允许您创建匿名类型的集合,这是不可能的(例如,在使用构造函数时).

对Ekin版本的一个改进是将该方法编写为扩展方法.遵循通常的命名模式(例如ToList或ToArray),我们可以将其命名为ToObservableCollection:

static ObservableCollection<T> ToObservableCollection<T>   (this IEnumerable<T> en) {     return new ObservableCollection<T>(en); }

现在,您可以创建一个包含从liNQ查询返回的匿名类型的可观察集合,如下所示:

var oc =   (from t in visibleTasks      where t.IsSomething == true   select new { name = t.Taskname,Whatever = t.Foo }  ).ToObservableCollection();
总结

以上是内存溢出为你收集整理的C# – 将匿名类型转换为observablecollection全部内容,希望文章能够帮你解决C# – 将匿名类型转换为observablecollection所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存