草庐IT

c# - 为什么在使用 foreach 时不执行此 LINQ 查询?

在LINQ语句中创建新对象时,例如:varlist=newList(){"a","b","c"};varcreated=fromiinlistselectnewA();A类看起来像这样:classA{publicstringLabel;}然后使用foreach循环修改A中的属性:foreach(varcincreated){c.Label="Set";}为什么之后访问IEnumerable中的对象时没有设置值。例如。以下断言失败:Assert.AreEqual("Set",created.ElementAt(2).Label);我想知道为什么会这样。我希望foreach语句执行查询,并

c# - 检查字符串是否包含任何顺序的特定字符

我可以解释我正在尝试做的事情的最好方法是举一个例子:我的数据库中有一个字符串StackOverflow,当用户键入OAW时,我想返回该字符串以及以任何顺序包含这三个字符的任何其他单词.我试过各种LINQ/Lambda表达式,但无济于事。query.Where(a=>a.SerialNumber.Contains(a));我找到了一个帖子hereonSO看起来与我的相似,但它是用Java编写的。我觉得我正在尝试做的事情实现起来非常简单,但我只是想念它。任何帮助将不胜感激。 最佳答案 你可以尝试这样的事情:query.Where(str

c# - EntityFramework 多个 Where

我想知道,如果我一个接一个地使用多个Where(...)方法,EntityFramework是否足够聪明,可以将它组合到结果查询中。假设我有:context.Items.Where(item=>item.Number>0).Where(item=>item.Number生成的SQL查询会不会和我写的一样:context.Items.Where(item=>item.Number>0&&item.Number多个Where子句有没有后台优化? 最佳答案 是的,有。执行此操作的不是EntityFramework。编写数据库查询实际上是S

c# - 是否有带谓词的 String.IndexOf?

我需要能够说类似myString.IndexOf(c=>!Char.IsDigit(c))的东西,但我在.NET框架中找不到任何这样的方法。我错过了什么吗?以下是有效的,但我自己的滚动在这里似乎有点乏味:usingSystem;classProgram{staticvoidMain(){stringtext="555ttt555";intnonDigitIndex=text.IndexOf(c=>!Char.IsDigit(c));Console.WriteLine(nonDigitIndex);}}staticclassStringExtensions{publicstaticint

c# - Linq 多重 where 查询

我在构建相当繁重的linq查询时遇到了问题。基本上我有一种情况,我需要在循环中执行子查询以过滤掉从数据库返回的匹配项的数量。示例代码在下面的循环中:foreach(GuidparentinparentAttributes){varsubQuery=fromscindb.tSearchIndexesjoinaindb.tAttributesonsc.AttributeGUIDequalsa.GUIDjoinpcindb.tPeopleIndexesona.GUIDequalspc.AttributeGUIDwherea.RelatedGUID==parent&&userId==pc.CP

c# - 将 lambda 表达式转换为用于缓存的唯一键

我查看了与此类似的其他问题,但找不到任何可行的答案。我一直在使用以下代码生成唯一键,以便将我的linq查询结果存储到缓存中。stringkey=((LambdaExpression)expression).Body.ToString();foreach(ParameterExpressionparaminexpression.Parameters){stringname=param.Name;stringtypeName=param.Type.Name;key=key.Replace(name+".",typeName+".");}returnkey;它似乎适用于包含整数或bool值的

c# - 将过滤器表达式动态添加到数组

我有这个示例,它创建了3个表达式并将它们添加到一个表达式数组中。现在我想知道如何在循环中为未知数量的表达式做同样的事情。Expression>filter1=c=>c.City.StartsWith("S");Expression>filter2=c=>c.City.StartsWith("M");Expression>filter3=c=>c.ContactTitle=="Owner";Expression>[]filterExpressions=newExpression>[]{filter1,filter2,filter3}; 最佳答案

具有名称的元组的 C# 解决方法

我想要具有命名成员的不可变匿名类型,这些成员可以传递、比较和识别——元组和匿名类型的合并。Thisdoesn'texist,我意识到这一点。所以问题是:什么是使用C#4或5的良好惯用替代品?用例是来自异构数据源的流畅LINQ数据处理。总之,C#中的ETL。我做了一些相当复杂的分析,数据来自多个平台和来源。“将它们全部放在同一个平台上并使用EntityFramework”不是一个选项。我希望能够流畅地传递本质上是任意的记录——只读属性的不可变命名集。除了为每个单独的匿名类型创建自定义不可变POCO之外,我唯一能想到的是使用属性将编译注释添加到返回Tuple的方法。当然,编写一个代码生成器

c# - OData Linq 到查询字符串

我正在使用具有OData查询支持(睡衣)的WebAPI,虽然我知道WCF库使您能够查询WCFRIA服务URL,但我正在寻找的是一种生成Odata查询的轻量级方法字符串有点像LinqPad,但更通用。例如,如果我们知道服务返回特定类型的“ProductDTO”,我希望能够执行如下操作:(frompinODataSourcewherep.Name=="hi"selectnew{p.Model,Name}).ToODataQuery();这会将适当的$filter和$select命令作为可以附加到URL的字符串返回。任何人都知道任何图书馆可以做这样的事情吗? 最佳

c# - Linq running total 第一个值添加到自身

我有下面的计算客户帐户状态的运行总计,但是他的第一个值总是添加到自身,我不确定为什么-虽然我怀疑我错过了一些明显的东西:decimal?runningTotal=0;IEnumerablestatement=sage.Repository().Queryable().Where(x=>x.CustomerAccountNumber==sageAccount).OrderBy(x=>x.UniqueReferenceNumber).AsEnumerable().Select(x=>newStatementModel(){SLAccountId=x.CustomerAccountNumbe