C# WinRT中线程内的新线程
我正在线程池中执行某些功能。在该线程内,将执行linq查询。这需要更多的时间,因为在该查询中,选择my类的一个集合还具有一个bool属性,该属性已检查另外两个集合C# WinRT中线程内的新线程,c#,multithreading,async-await,c#-5.0,winrt-async,C#,Multithreading,Async Await,C# 5.0,Winrt Async,我正在线程池中执行某些功能。在该线程内,将执行linq查询。这需要更多的时间,因为在该查询中,选择my类的一个集合还具有一个bool属性,该属性已检查另外两个集合 collection.Select(item => new MyElement { IsActive = this.CheckIsActive(collection1, collection2, item), Value = item, Name = item != null ? item.ToString() : "Empty
collection.Select(item => new MyElement { IsActive = this.CheckIsActive(collection1, collection2, item), Value = item, Name = item != null ? item.ToString() : "Empty" }).ToList<MyElement>();
collection.Select(item=>newmyelement{IsActive=this.CheckIsActive(collection1,collection2,item),Value=item,Name=item!=null?item.ToString():“Empty”}).ToList();
检查激活法----
private bool CheckIsActive(列表集合1、列表集合2、对象项){
if(collection1.Contains(项目)和&!collection2.Contains(项目))
返回false;
返回true;}
这能优化吗?有什么想法吗
可以在新线程中使用新线程执行上述操作吗
可以使用线程还是等待返回类型方法?当向堆栈溢出发布代码(通常是!)时,请考虑将其分解成多行,而不是每个人都必须滚动一条非常长的线。另外,你的问题目前还不清楚。我完全不确定您是想问一个关于LINQ的问题,还是想问一个关于异步的问题。我们甚至不知道这是否是一个“本地”LINQ查询。(有一件事我可以告诉你:如果你能把
collection1
和collection2
改成Hashset,那么如果它们很大的话,速度可能会快很多。)@JonSkeet:请解释一下Hashset的compapision。@Sankarann:检查Hashset中的包含是O(1),而检查列表中的包含是O(N)。对于小集合来说,这并不重要,但是如果您的集合不小,则可以从根本上减少操作时间。但你们并没有提供足够的信息让我们真正说出这是否对你们有帮助。当然,我有点困惑我应该用什么来优化时间。这两个问题我都被问到了。
private bool CheckIsActive(List<object> collection1, List<object> collection2, object item){
if (collection1.Contains(item) && !collection2.Contains(item))
return false;
return true;}