草庐IT

c# - 字符串 EndsWith 方法中 Entity Framework Linq 中的奇怪行为

背景我有一个只包含一列的表:名称。里面只有四行,比方说|Name||test1.com||test2.com||test3.com||test4.com|问题如果我查询varemail="a@test2.com";Table.Where(x=>email.EndsWith(x.Name));我会得到一个空列表。但是如果我先查询所有行并像这样计算内存中的位置varemail="a@test2.com";Table.ToList().Where(x=>email.EndsWith(x.Name));我会得到一个仅包含正确的test2.com的列表。第一次查询生成的SQL是SELECT"Ex

c# - foreach 循环与 ForEach 方法 - 区别?

这个问题在这里已经有了答案:foreachvssomeList.ForEach(){}(13个答案)关闭7年前。使用foreach循环或ForEachLINQ方法之间是否存在任何差异(性能或其他方面)?对于上下文,这是我方法之一的一部分:foreach(varpropertyintypeof(Person).GetProperties()){Validate(property.Name);}我也可以使用这段代码来执行相同的任务:typeof(Person).GetProperties().ToList().ForEach(property=>Validate(property.Name

c# - 当 dbContext 带有 'using' block 时,如何从 Linq 返回 IQueryable 到 SQL 查询?

我一直在使用“使用”block进行编码,但我想知道我是否可以从以下返回一个IQueryable而无需在我访问它之前处理该对象。publicIQueryableGetContacts(stringclientID){using(dbDataContextdb=newdbDataContext()){varcontacts=from_contactsindb.Contactswhere_contacts.ClientID==clientIDorderby_contacts.LastNameascendingselect_contacts;returncontacts;}}我是简单地删除“u

c# - LINQ To 对象 GroupBy 方法

LINQToObjectsGroupBy方法如何工作?它会为每个键查看整个集合吗?有什么方法可以告诉GroupBy方法集合已排序吗? 最佳答案 GroupBy,如果处理得当,将只在一次前向传递中起作用。基本实现(不是他们的)将可比到:vardata=newDictionary>(comparer);foreach(variteminsource){varkey=keySelector(item);Listlist;if(!data.TryGetValue(key,outlist)){data.Add(key,list=newList

c# - 在单个元素级别应用 Linq Func<T, TResult> 键选择器

对不起,如果标题有误导性,不知道如何描述这个。我的最终目标是拥有一个IQueryable的扩展方法以及某种形式(例如见下文)的表达式,它允许我返回一个IQueryable>(或类似),其中包含原始T在Entity字段,以及包含由某种形式的表达式描述的元素的数组/可枚举。我知道这没有什么意义,希望在举个例子之后它会...这是我到目前为止:classEntityIndex{TEntity{get;set;}//Doesn'thavetobeIEnumerable,whateveriseasierIEnuermableIndex{get;set;}}staticclassElsewhere{

c# - Linq To SQL 选择动态列

是否可以动态限制从LINQtoSQL查询返回的列数?我有一个包含50多个列的数据库SQLView。我的应用程序有一个包含50多个属性的域对象,每列一个。在我的winforms项目中,我将域对象列表绑定(bind)到网格。默认情况下,只有少数列可见,但用户可以打开/关闭任何列。用户提示网格加载时间太长。我捕获了LINQ生成的SQL查询,然后在SQLServerManagementStudio中执行它并验证了它的速度。如果我更改SQL语句,删除所有不可见的列,它几乎会立即运行。性能与查询中的列数直接相关。我想知道是否可以动态更改从LINQ生成的SQL查询返回的列数?例如,这是我的代码目前的

c# - Linq 对象 : inner query performance

在回答questions之一时我看到了2个LINQ代码示例,它们应该完全相同。但我对性能感到好奇,发现一个代码比另一个代码快得多。我不明白为什么。我从问题中提取了数据结构publicstructStrc{publicdecimalA;publicdecimalB;//morestuff}publicclassCLASS{publicListlistStrc=newList();//otherstuff}然后我写了简单的基准测试(使用benchmarkdotnet库)UPD我包括了所有要求的测试publicclassTestCases{privateDictionarydict;publ

c# - 字典 Getter 中的参数异常

我遇到了一个奇怪的情况,即以特定方式在C#字典上使用getter会产生参数异常,即使这应该是neverhappen.这个问题似乎只发生在我的电脑上。实际上,我已经找到了解决我原来问题的替代方案。但是我真的很想了解为什么原始解决方案不起作用。我有一个用于Solidworks插件的字典。它跟踪打开的文档及其事件处理程序。它是这样定义的:privateDictionary_openDocs=newDictionary();Solidworks有method检索事件文档。当我尝试使用它来检索事件文档的事件处理程序时,如下所示:_openDocs[SwApp.ActiveDoc]我得到这个Arg

c# - 当 LINQ 语句没有 where 子句时,为什么没有智能感知?

谁能告诉我为什么我不使用这段代码获得智能感知:vartestDocuments=(fromuindb.TestDocumentsorderbyu.WhenCreateddescendingselectu).但我确实通过这段代码获得智能感知:vartestDocuments=(fromuindb.TestDocumentsorderbyu.WhenCreateddescendingwhere1==1selectu). 最佳答案 我遇到了类似的情况,然后我添加了以下行..usingSystem.Linq;

c# - 手动查找比加入 LINQ 有什么好处?

构建和使用手动查找(ILookup)方法比使用Join的连接更快或GroupJoin在本地IEnumerableLINQ中的序列?我在某处读到编译器实际上翻译了Join的内部序列和GroupJoin至ILookup无论如何。什么会ILookup单独使用它的好处是什么? 最佳答案 这取决于。如果您正在使用基于DataContext的对象,那么连接会通过select语句一直向下转换到SQL服务器中。如果它是一个POCO(或更具体地说是一个普通的旧CLR集合)或其他东西,那么是的,它被用作ILookup。