草庐IT

c# - LINQ to XML 和 LINQ to Objects 语法

为什么是:(CheckBox)lstControls.Where(x=>x.ID=="some_id").SingleOrDefault();效率不如:(CheckBox)lstControls.SingleOrDefault(x=>x.ID=="some_id");对于格式不太好的XML文档,您只知道要查找的元素的名称,这是可以用来查找元素的最佳语句:varxmlElem=(fromninxDocument.Descendants()where(string)n.Attribute("name")=="some_node_name"selectn).SingleOrDefault()

c# - 使用 LINQ to XML 在 XML 元素内对双引号进行编码

我正在将一个XML字符串解析成一个看起来像这样的XDocument(使用XDocument.Parse)Hereis"Sometext"然后我对XML进行了一些操作,我想将它作为字符串发回,就像它进来时一样Hereis"Sometext"Anotheritem但是,我得到的是Hereis\"Sometext\"Anotheritem请注意双引号现在是如何转义而不是编码的?无论我使用都会发生这种情况ToString(SaveOptions.DisableFormatting);或varstringWriter=newSystem.IO.String

c# - 如何使用 LINQ 确定特定属性值是否存在?

我正在使用C#编程并使用XDocument。想要将一个元素添加到树中当且仅当没有其他元素具有匹配的属性值时。例如,是否有一个LINQ表达式,我可以使用它来查看下面的元素,并在我添加它之前查看是否已经存在同名的foo元素?我想做这样的事情......while(myXDocument.Element("people").Elements("foo").Attribute("Name").Contains(myName)){//modifymyNameandthentryagain...} 最佳答案 这应该有效:XElement.Any

c# - 使用 LINQ 构建 Dictionary 轻松访问已安装程序的注册表项

SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallWindows注册表的键由键的子集组成,每个已安装的程序一个。每个程序的键名都被命名为一个明显随机的字符串,这使得查找给定程序的注册表键变得简单易行(不是!)。DisplayName注册表项的值包含程序的名称。我想使用LINQ构建一个字典(Dictionary),对于每个注册表项,映射DisplayName注册表项本身的值。有关如何执行此操作的任何建议?与此同时,我将继续阅读LINQ看看我是否能找到解决方案——这是我第一次真正考虑使用LINQ。我在这里发布我的问题,因为我认为这可能是一

c# - 在 LINQ-to-SQL 中使用跨上下文连接

最初我使用LINQ-to-SQL编写了这个查询varresult=fromwinPatternDataContext.WindowsjoincfinPatternDataContext.ControlFocusonw.WindowIdequalscf.WindowIdjoinpinPatternDataContext.Patternsoncf.CFIdequalsp.CFIdjoinrinResultDataContext.Resultsonp.PatternIdequalsr.PatternIdjoinfiinResultDataContext.IclFileInfosonr.Icl

c# - 在已编译的 LINQ 查询中使用 lambda Include 方法

我目前正在尝试通过预编译来优化程序中的一些LINQ查询。其中一些查询广泛使用了预先加载;这是一个例子:publicstaticFunc>GetAllByName=CompiledQuery.Compile((context,name)=>context.Employees.Include(e=>e.Email).Where(e=>e.LastName==name));使用示例:varemployees=GetAllByName(dbContext,"Bob").ToList();不幸的是,尝试使用它会导致以下错误:LINQtoEntitiesdoesnotrecognizethemet

c# - 如何使用 LINQ-to-SQL 忽略大小写?

我在使用LINQ-to-SQL获取数据时遇到问题。我使用以下代码为我们的网络应用程序查找用户(用户名是电子邮件地址):varreferenceUser=db.ReferenceUsers.SingleOrDefault(rf=>rf.Email==values["emailAddress"]);如果我输入test@test.com我会得到一个ReferenceUser但是如果我输入tESt@tESt.com我不会。如何让LINQ在选择用户时忽略大小写? 最佳答案 是否:varreferenceUser=db.ReferenceUse

c# - LINQ 比较两个列表 - 添加新的、删除旧的、保留相同的列表

我有一个对象A的两个列表(L1,L2),L1用于存储更改前的对象列表(多对多关系)。L2是改变后的关系。我需要保留公共(public)元素但添加新元素并删除不在L2中的元素。我想知道是否有一个我可以与LINQ一起使用的衬垫来完成此操作。如果您需要更多信息,请告诉我。提前致谢 最佳答案 如果我正确理解了您的要求,这应该可行:L1.AddRange(L2.Except(L1));L1.RemoveAll(item=>!L2.Contains(item));不是单线,但足够接近... 关于c#

c# - 使用 OR 的 LINQ WHERE

我使用LINQ像这样创建我的where子句:varquery=fromxincontext.Xsselectx;if(y==...){query=query.Where(x=>x.Y==1);}我有一堆这样的“if....where”语句。我遇到的问题是,所有这些wheres使用AND连接where子句,但我需要我所有的where子句都使用OR。有没有一种简单的方法可以将此代码移植到OR代码中?甚至使用OR执行此操作的最简单方法是什么?谢谢。 最佳答案 你可以这样做:varquery=fromxincontext.Xswhere(x

c# - 多参数linq表达式如何初始化它们的参数?

在此post问题的解决方案是:list.Where((item,index)=>index多参数的概念(即(item,index))让我有点困惑,我不知道正确的词来缩小我的谷歌搜索结果。所以1)那叫什么?更重要的是,2)不可枚举变量是如何初始化的?在这种情况下,index是怎样的?编译为int并初始化为0?谢谢。 最佳答案 Lambda表达式有多种语法选项:()=>...//noparametersx=>...//singleparameternamedx,compilerinferstype(x)=>...//singlepara