LINQ通过排序/转换数据结构进行优化吗?
即
LINQ是在这段代码中迭代,还是对数据进行任何类型的排序/转换以优化查找操作?
var list = new List<IdCard> {new IdCard(){Name = "a", Number = 1}, new IdCard() { Name = "b", Number = 2 } };
var idA = list.FirstOrDefault(id => id.Name == "a");
var idB = list.FirstOrDefault(id =>
我想把这个写成LINQ,
原始代码:
For Each CurrentForm As Form In MyForms
AddLink(CurrentForm.GetLink())
Next
我是一个LINQ初学者,到目前为止,我还不确定在哪里使用和不使用。如果在这种情况下LINQ会做更多的伤害然后帮助,请随时火焰我。
编辑: --您可以假设AddLink()存在重载,它接受IEnumerable
非常罕见的我的MVC 3应用程序有以下例外。它只处于发布模式,当它启动时,只重新启动IIS应用程序池会有所帮助。有人能告诉我什么会导致这个错误吗?
例外是:
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.Mvc.FilterProviderCollection.<RemoveDuplicates>d__b.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 sou
当我跑步时:
MethodInfo m = typeof(Expression).GetMethod("Lambda", new Type[]{typeof(Expression), typeof(ParameterExpression[])});
我得到:
System.Reflection.AmbiguousMatchException: Ambiguous match found.
这是为了一般性地这样做(而不是知道它是一个字符串)。
var newExpression = Expression.Lambda<Func<T, string>>(pr
有两份名单
Myobjects列表包含所有项,都具有ObjectID的"oid“属性
ObjectID类型的列表是所有对象的列表。
已删除
问题是如何在Myobjects中找到在is属性中具有ObjectID的任何项。我很难在LINQ中找到这两个“每个”循环的等价物。这应该很容易,但我做错了。在30000个项目上执行这个LINQ需要20秒,每个循环使用1秒。下面是为-每个循环工作的,以及我试图使它的LINQ (这个是慢的)。Linq解决方案是我想要的。
For Each i As LengthAreaObject In myobjects
我有一个包含大约400,000行的Datagridview -在用户选择多行的情况下,我希望用所选行中的特定单元格填充一个long列表,即我在datagridview上拥有的隐藏主键值。
我已经做到了这一点,但我似乎不能让它工作,我认为通过LinQ做会比在selectedrows上使用For...Next或For...Each循环更快--特别是如果用户执行(并且能够并且将会)选择100,000+行--但是我的LinQ语法糟糕透了-所以在这里,如果有人对LinQ有一个很好的推荐,那就太好了(虽然有一些书,但没有什么比读过几本书的人的推荐更好的了)。
Dim Mylist As New Li
我有一个LINQ查询,它返回布尔值。
Boolean status=true;
var s = from p in msg where p.Type == false select false;
我需要从LINQ查询的值设置状态,这是一个布尔--如何采取一种方法来达到这个目的
如果LINQ查询只有一个false ,则需要以布尔形式返回一个false,这就是我需要的。
我使用的是上的System.Linq.Dynamic版本。
我对非System.Linq.Dynamic解决方案不感兴趣。
我正在尝试对嵌套集合的属性执行select。让我们假设我们有以下情况:
public class Region
{
public int Id { get; set; }
public List<Town> Towns { get; set; }
}
public class Town
{
public int Id { get; set; }
public string Name { get; set; }
}
是否有可能“选择”地区的id和
我的UI中有一个TextBlock绑定到属性的.Count()扩展。我想将LINQ过滤添加到属性中,但是当我这样做时,就会破坏绑定。
这可以在没有任何问题的情况下工作并更新UI:
public IEnumerable<Worker> WorkersTest
{
get
{
return DataManager.Data.Workers;
}
}
添加LINQ筛选后,WorkersTest不会更新TextBlock,尽管MessageBox确认正在修改该属性。但是,在初始化数据时,该值将正确显示:
public IEnumerable<
我正在开始一个小的windows forms项目,它广泛使用了可编辑的网格。我想使用Linq to Entities,但是虽然将网格绑定到Linq查询很简单,但它是只读的。我想不出一个好方法来创建一个可以自动更新数据库的可编辑网格。(我破解了一个变通方法,我将数据复制到数据集中以进行显示/更新和转换回...丑陋!)
因此,现在我决定忘记Linq to Entities,而使用2.0中旧的表适配器/数据集方法。
为什么我应该使用Linq to Entities,有什么令人信服的理由吗?有没有办法做我刚刚错过的可编辑网格?
我一直在使用Linq to SQL来对抗Sql Server CE。
数据库是只读的,所以我可以有几个假设。
为了避免访问文件系统,我最初的方法是将所需的实体缓存到应用程序内存中,并针对它们使用linq to对象。
虽然Linq to SQL适用于有限的查询,但在需要连接的地方,直接使用Linq to SQL要优于Linq to Objects。
回到起点,我想优化我的性能,我现在的想法是强制将整个文件加载到RAM,并针对它使用Linq to SQL。
有什么想法是怎么做到的吗?还有更多的想法吗?
Ariel
我刚刚发现了以下片段:
Return New List(of obj) From { _
New obj With {.a = 1, .b = 2,
New obj With {.a = 3, .b = 4}
我以为..。好的,为什么在这里使用From?我知道Linq的From,但在上面的情况下没有看到它。所以我检查了:
指定一个或多个范围变量和要查询的集合。
我将其连接到像From X in Y这样的Linq查询,其中X是集合Y中的一个变量,但在上面的上下文中我不理解它。有人能给我解释一下片段里的意思吗?
我想执行以下选择:
SELECT 0 as Value
LINQ中的相关语法是什么?
编辑
我想在如下所示的Concat()调用中使用关联LINQ语句
var c = (from a in mytable select a.Value).Concat(select 0).Sum();
如您所见,Concat(select 0)显然不编译。有什么想法吗?
编辑2
David建议使用一个简单的集合来代替。我试过了
private decimal[] mZeroDecimals = new[] { 0.0m };
...
public void MyFunction()
{
var c = (
在使用自定义集合对象时,我经常发现linq是有问题的。他们经常被认为是
基集合
abstract class BaseCollection<T> : List<T> { ... }
集合定义为
class PruductCollection : BaseCollection<Product> { ... }
是否有比addrange或concat更好地将来自linq expession的结果添加到此集合中的方法?
var products = from p in HugeProductCollection
where p.Ven
我刚刚开始使用MVC 4,我一直很喜欢它,但是当我试图让我的数据库(只是名称和电子邮件条目)在索引视图中显示它的所有条目时,我遇到了麻烦。我得到以下错误:
传递给字典的模型项是'System.Collections.Generic.List1[MobileWebFormver2.Models.WebForm1]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1MobileWebFormver2.Models.User'.类型的
编辑我的存储库类时,会弹出一个错误
var applicantList = (from a in context.Profiles
join app in context.APPLICANTs
on a.PROFILE_ID equals app.Profile_id into joined
from j in joined.DefaultIfEmpty()//.OrderBy(v => v.APPLICA
包含有错误:
linq中的错误不能从“System.Collections.Generic.IEnumerable”转换为“System.Linq.IQueryable”
为什么?
public class ListQuestionAssessor
{
public string sum { get; set; }
public int QuestionsID { get; set; }
public int AssessorID { get; set; }
public int AssessID { get; set;
我目前正在寻找我们的应用程序中的内存泄漏,当涉及到执行任何linq查询的视图模型时,我在内存中找到了一个具有该名称空间的对象。我使用dotMemory进行检查,它列出了以+<>c结尾的对象。我还没有找到任何解释,这是什么类型的对象,如果这是一个真正的问题,这驻留在内存中,但我发现它连接到linq查询。重现这一点的代码,如您所见,Linq查询结果从未使用过。
public class myViewModel : PropertyChangedBase
{
public myViewModel()
{
var memissue = _dummyLi
我有以下查询,我正试图通过TCount获得TopicCounts的前4名:
var bygroup = (from element in inputSplit
group element by element.Text into groups
from win in groups.TumblingWindow(TimeSpan.FromSeconds(10))
select new TopicCounts
{
To
我是LINQ的新手,对于像我这样非常习惯普通SQL查询的人来说,学习LINQ仍然是一个挑战。
我在SQL中使用左连接的子查询和SQL server的标准函数,如FIRST_VALUE,可以翻译成LINQ吗?不确定如何在LINQ..中重写此first_value函数。
SELECT *
FROM dbo.Stock
LEFT JOIN (
SELECT distinct stockID, FIRST_VALUE(unitPrice) OVER (PARTITION BY stockid ORDER BY dbo.SalesOrder.orderDate desc ) last_uni