Tag: linq

LINQfind一个值的数组索引

假设我有以下string数组: string[] str = new string[] {"max", "min", "avg", "max", "avg", "min"} 使用LINQ获取匹配一个string的索引列表是否可行? 作为一个例子,我想searchstring“avg”并得到一个包含的列表 2,4 这意味着“平均”可以在str [2]和str [4]find。

初学者指南LINQ

在Stack Overflowtesting期间,我看到了很多关于LINQ SQL的问题,但对此一无所知……这听起来很有趣。 什么是LINQ,我该如何开始? 链接指南或文件的奖金:) PS:我很长一段时间每天使用数据表和参数化SQL的C#开发人员

限制从Linq列表中返回的结果数

我正在使用Linq / EF4.1从数据库中提取一些结果,并希望将结果限制为(X)最近的结果。 其中X是用户设定的数字。 有没有办法做到这一点? 如果这将有助于限制结果集,我目前将它们作为List传回。 虽然我可以通过循环来限制这个,直到我打到X我只是假设不传递额外的数据。 以防万一它是相关的…从SQL Server数据库运行的C#MVC3项目。

如何使用linqfind最小值

我有一个class A { public float Score; … } class A { public float Score; … }和一个IEnumerable<A> items并希望findA分数最低。 使用items.Min(x => x.Score)给出了最低分数,而不是最低分数的实例。 我怎样才能通过我的数据迭代一次获得实例? 编辑 :只要有三个主要的解决scheme: 写一个扩展方法(由Svish提出)。 优点 :易于使用和评估每个项目只有一次分数。 缺点 :需要扩展方法。 (我为我的应用程序select了这个解决scheme。) 使用Aggregate(由Daniel Renshaw提出)。 优点 :使用内置的LINQ方法。 缺点 :对未经训练的眼睛稍微混淆,并多次呼叫评估者。 实现IComparable(由cyberzed提出)。 优点 :可以直接使用Linq.Min。 缺点 :固定为一个比较器 – 执行最小计算时不能自由select比较器。

在.NET中有效地合并string数组,保持不同的值

我正在使用.NET 3.5。 我有两个string数组,可能共享一个或多个值: string[] list1 = new string[] { "apple", "orange", "banana" }; string[] list2 = new string[] { "banana", "pear", "grape" }; 我想要一种方法将它们合并成一个没有重复值的数组: { "apple", "orange", "banana", "pear", "grape" } 我可以用LINQ来做到这一点: string[] result = list1.Concat(list2).Distinct().ToArray(); 但我想这对于大型数组来说效率不高。 有没有更好的办法?

为一个genericsC#集合中的每个值调用一个函数

我有一个List集合中的整数值的集合。 我想为集合中的每个值调用一个函数,其中一个函数的参数是一个集合值。 没有在foreach循环中做这个…有没有办法用lambda / linqexpression式来实现呢? 像… myList.Where(p => myFunc(p.Value)); ? 在此先感谢,-s

在SQL Server 2008中启用Service Broker

我正在整合SqlCacheDependency在我的LinqToSQL数据上下文中使用。 我在这里使用Linq查询的扩展类 – http://code.msdn.microsoft.com/linqtosqlcache 我已经连接了代码,当我打开页面,我得到这个exception – “当前数据库的SQL Server Service Broker未启用,因此不支持查询通知,如果希望使用通知,请为此数据库启用Service Broker。” 它来自全球这个事件 protected void Application_Start() { RegisterRoutes(RouteTable.Routes); //In Application Start Event System.Data.SqlClient.SqlDependency.Start(new dataContextDataContext().Connection.ConnectionString); } 我的问题是… 如何在我的SQL Server 2008数据库中启用Service Broker? 我试图运行这个查询.. ALTER DATABASE表名SET ENABLE_BROKER但它永远不会结束,永远运行,我必须手动停止它。 一旦我在SQL Server 2008中有这个设置,它会过滤到我的DataContext,还是我需要在那里configuration一些东西? 谢谢你的帮助 Truegilly

自动编译Linq查询

我们发现编译我们的Linq查询要比每次编译要快得多,所以我们想开始使用编译查询。 问题在于它使得代码更难阅读,因为查询的实际语法在其他文件中是closures的,远离它被使用的地方。 我想到编写一个方法(或扩展方法)可能会使用reflection来确定传入的查询,并自动caching编译后的版本以供将来使用。 var foo = (from f in db.Foo where f.ix == bar select f).Cached(); Cached()将不得不反映传入的查询对象,并确定所选的表以及查询的参数types。 显然,reflection速度有点慢,所以最好使用caching对象的名字(但是你仍然必须首次使用reflection来编译查询)。 var foo = (from f in db.Foo where f.ix == bar select f).Cached("Foo.ix"); 有没有人有这样做的经验,或知道是否有可能? 更新:对于那些没有看到它,你可以编译LINQ查询到SQL与以下代码: public static class MyCompiledQueries { public static Func<DataContext, int, IQueryable<Foo>> getFoo = CompiledQuery.Compile( (DataContext db, int ixFoo) => (from f in db.Foo […]

格式化LINQ查询的最佳方法

在你忽略/投票结束这个问题之前,我认为这是一个有效的问题,因为代码清晰性是讨论的一个重要话题,所以编写可维护的代码是非常重要的,我非常感谢那些曾经遇到过。 我最近遇到了这个问题,因为大量的嵌套,LINQ查询可以非常快速地实现。 下面是我所想到的格式差异的一些例子(对于相同的非复杂的查询) 没有格式化 var allInventory = system.InventorySources.Select(src => new { Inventory = src.Value.GetInventory(product.OriginalProductId, true), Region = src.Value.Region }).GroupBy(i => i.Region, i => i.Inventory); 格式boost var allInventory = system.InventorySources .Select(src => new { Inventory = src.Value.GetInventory(product.OriginalProductId, true), Region = src.Value.Region }) .GroupBy( i => i.Region, i => i.Inventory); 块格式化 var allInventory = system.InventorySources .Select( src […]

OData“列表中的ID”查询

我有一个OData服务,我试图通过ID列表进行筛选; SQL的等价物会是这样的: SELECT * FROM MyTable WHERE TableId IN (100, 200, 300, 400) 我试图过滤的属性是键入为Int32。 我试过以下,这给我一个错误“操作员添加”与操作数types“Edm.String”和“Edm.Int32”不兼容: string ids = ",100,200,300,400,"; from m in provider.Media where ids.Contains("," + t.media_id + ",") 以及 string ids = ",100,200,300,400,"; from m in provider.Media where ids.Contains("," + t.media_id.ToString() + ",") 和 string ids = ",100,200,300,400,"; from m in provider.Media where ids.Contains("," […]