草庐IT

Linq2XSD

全部标签

c# - 我可以使用 System.Linq.Expressions 动态生成异步方法吗?

我知道编译器无法将异步lambda表达式转换为表达式树,但是否可以手动生成表达式树?varexpr=Expression.Lambda>(//howdoIuse'await'inthebodyhere?);varfunc=expr.Compile();我在Expression类中找不到任何与async或await相关的方法,但也许还有另一种方法? 最佳答案 await涉及重要编译器重写;生成的IL与原始C#非常不同,具有变量提升(到类上)和分支、任务、延续等。它肯定不是可以用简单lambda表示的东西,虽然在最新版本的.NET中具有

c# - 如何在 LINQ 中将匿名类型转换为强类型?

我有一个ListViewItems数组(ListViewItem[]),我在每个ListViewItem.Tag中存储一个SalesOrderMaster对象以供以后引用。我现在有一些代码,通过每个ListViewItem安全地将.Tag属性转换为SalesOrderMaster对象,然后将该对象添加到SalesOrders集合,只有在检查以确保该集合中尚不存在订单。比较销售订单的过程非常昂贵,为了清晰和性能,我想将其转换为LINQ表达式。(我还安装了ParallelExtensionsto.NETFramework3.5,因此我可以使用它来进一步提高LINQ性能)所以事不宜迟:这就是

c# - linq Except 和自定义 IEqualityComparer

我正在尝试在两个字符串列表上实现自定义比较器,并使用.Except()linq方法获取不属于列表之一的字符串。我进行自定义比较器的原因是因为我需要进行“模糊”比较,即一个列表中的一个字符串可以嵌入到另一个列表中的字符串中。我做了以下比较器publicclassItemFuzzyMatchComparer:IEqualityComparer{boolIEqualityComparer.Equals(stringx,stringy){return(x.Contains(y)||y.Contains(x));}intIEqualityComparer.GetHashCode(stringob

c# - 如何使用 Linq 获得最高值(value)

假设我有以下数据:NamePriorityA3A5B1C1C3C2我想获得具有最高优先级的不同名称列表,因此结果如下所示:NamePriorityA5B1C3我如何使用Linq来做到这一点? 最佳答案 varquery=yourData.GroupBy(x=>x.Name,(k,g)=>g.Aggregate((a,x)=>(x.Priority>a.Priority)?x:a));//andaquicktest...foreach(varresultinquery){Console.WriteLine(result.Name+""

c# - 强制Linq不延迟执行

其实这个问题和这个帖子是同一个问题:HowcanImakesuremyLINQqueriesexecutewhencalledinmyDAL,notinadelayedfashion?但由于他没有解释为什么他想要它,这个问题似乎被忽略了一点。这是我的类似但更好解释的问题:我有两种类型的一些线程(暂时忽略UI线程)。有一种“数据收集”线程类型和一种“计算”线程类型。数据收集线程很慢。有相当多的数据需要从各个地方筛选。计算线程比较快。到目前为止的设计模型是发送数据收集线程以查找数据,并在它们完成后将数据传递给计算。当我在Linq中编写我的数据收集代码时,我最终将一些缓慢提升到回到我的计算线

c# - 在 Linq 中使用 .NET 4 动态关键字的好例子?

所以我刚从亚马逊得到了关于LINQtoObjectsUsingC#4.0:UsingandExtendingLINQtoObjectsandParallelLINQ(PLINQ)的推荐.它说这本书介绍了在Linq中使用dynamic关键字,这让我想到:您可以使用dynamic关键字做出什么样的令人惊叹的事情,而您不能用其他方式使用Linq? 最佳答案 这是一个想法:通过将LINQ与动态相结合,您可以查询未类型化的数据集,就好像它们是有类型的。例如,假设myDataSet是一个无类型数据集。使用动态类型和称为AsDynamic()的扩

c# - LINQ to entities - 构建 where 子句以测试多对多关系中的集合

所以,我正在使用LinqEntityFramework。我有2个实体:Content和Tag。他们之间是多对多的关系。Content可以有很多Tags而Tag可以有很多Contents。所以我试图编写一个查询来选择任何标签名称等于blah的所有内容两个实体都有另一个实体的集合作为属性(但没有ID)。这就是我挣扎的地方。我确实有一个用于Contains的自定义表达式(因此,无论谁能帮助我,您都可以假设我可以为集合做一个“包含”)。我从以下位置得到这个表达式:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2670710&Site

c# - 在 XmlNodeList 上使用 LINQ

我想选择id为“abc”的节点,返回其abv为“a”。XmlDocumentdoc=newXmlDocument();doc.Load(filePath);XmlNodeListlist=doc.SelectNodes("X/Y");varnode=list.Cast().Where(node=>node["id"].InnerText=="abc").Select(x=>x["abv"].InnerText);但是不行,node["id"].InnerText一直是""。能指出哪里有问题吗?非常感谢 最佳答案 除了由于非唯一的no

c# - 通用 LINQ 查询谓词?

不确定这是否可行,或者我是否正确表达了我正在寻找的内容,但我的库中反复出现以下代码,并且想练习一些DRY。我有一组基于用户提供的简单搜索字段alaGoogle查询的SQLServer表。我正在使用LINQ根据搜索字符串中的内容编写最终查询。我正在寻找一种使用泛型并传入lambda函数的方法,以此创建一个可重用的例程:string[]arrayOfQueryTerms=getsTheArray();varsomequery=fromqindataContext.MyTableselectq;if(arrayOfQueryTerms.Length==1){somequery=someque

c# - LINQ 首先选择

嗨,我有这段linq代码varfp=lnq.attaches.First(a=>a.sysid==sysid).name;分析时它会生成以下t-sqlSELECTTOP(1)[t0].[sysid],[t0].[name],[t0].[att_size],[t0].[cid],[t0].[flags],[t0].[contents]FROM[lntmuser].[attach]AS[t0]在我看来,它像select*一样返回,这将导致查询执行表扫描而不是使用索引。不利于性能。我怎样才能只选择名称列,例如:SELECTTOP(1)[t0].[name]FROM[lntmuser].[at