Tag: linq

在LINQ查询中只选择几列

我有以下查询 var xyz = from a in prod.Categories where a.CatName.EndsWith(“A”) select a; 但是,在这种情况下返回所有列。 我如何重写查询,以便只返回几个列,如a.CatName,a.CatID,a.CatQty等。

是否可以使用Linq和lambdas而不包含System.Linq命名空间?

前段时间,我一直在研究一个相当扭曲的项目 – 我只能在单个范围内编写代码,然后将其放入C#函数(由另一个模块)。 我只能使用之前声明的名称空间(我对它们没有影响)并且只能使用我工作的作用域中的变量。因此,我无法更改标题和包含的库。 当我想操作generics集合时出现问题 – 我既不能使用lambda表达式也不能使用LINQ – 我根本无法using System.Linq; ,因为我无法访问文件头。 我只需做一件简单的事情,没有LINQ或lambda就很容易管理。 但是,之后我想知道会发生什么,如果我不得不在IEnumerable上使用一些更复杂的操作。 从那以后,我的问题出现了: 是否可以在不更改文件头和添加新命名空间的情况下使用LINQ或lambdas? 假设我们有一个List _Numbers = new List(); 。 让它充满一些数字。 现在我想从中选择所有偶数。 using System.Linq; 在标题中,解决方案很明显: List _NewList = _Numbers.Where(n => n % 2 == 0).ToList(); 要么 List _NewList = (from _Number in _Numbers where _Number % 2 == 0 select _Number).ToList(); 但是如果不包含LINQ,我该如何实现呢? 我的第一个猜测是这样的: List […]

从List 到IEnumerable 返回List 的转换无效,为什么?

所以基本上我有这个方法。 public List FilterCustomersByStatus(List source, string status) { return (List)source.Where(c => c.Status == status); } 我抛出一个它无法投射的错误: 无法将类型为’WhereListIterator`1 [AppDataAcces.Customer]’的对象转换为’System.Collections.Generic.List`1 [AppDataAcces.Customer]’。 为什么…? 由于底层类型是相同的,Enumerable.Where是否创建了WhereListIterator的新实例,如果是这样,为什么有人会这样做,因为这是不必要的性能和function损失,因为我总是要创建一个新列表(.ToList( ))

使用扩展方法的entity framework分页很慢?

我在C#中的entity framework中查询速度有问题。 我创建了一个名为Page的扩展方法来处理分页,但是当我使用它时,查询变得非常慢。 如果我只是做.Skip(page.Value * pageSize.Value).Take(pageSize.Value)而不是使用Page,查询得到的速度要快得多。 我想在使用Page时,在分页之前获取所有联系人。 有没有办法防止这种情况或我做错了什么? 查询: var contacts = db.Contacts .Where(x => x.AccountID == accountID && x.Deleted == false) .OrderByDescending(x => x.FirstName) .ThenBy(x => x.LastName) .ThenBy(x => x.CreatedDate) .Page(page, pageSize); return contacts.ToList(); 扩展方法: public static IEnumerable Page(this IEnumerable elements, int? page, int? pageSize) { if (page.HasValue && pageSize.HasValue) return elements.Skip(page.Value * pageSize.Value).Take(pageSize.Value); […]

在LINQ to SQL中避免2100参数限制

在我正在进行的项目中,我需要以下列方式访问LINQ中的2个数据库: 我得到了DB1指定日期范围之间的所有旅行号码列表,并将其存储为“长”值列表 我在DB2上执行了大量连接的广泛查询,但只查看上面列表中包含其旅行编号的旅行。 问题是,来自DB1的行程列表经常返回超过2100项 – 我当然在SQL中达到2100参数限制,这导致我的第二个查询失败。 我一直在寻找解决这个问题的方法,例如此处所描述的,但这实际上是将我的查询更改为LINQ-to-Objects,这会导致我的连接出现很多问题 我还能做其他解决方法吗?

如何使用动态LINQ进行求和

我有以下与动态linq库完美配合: string where = “Price < 5"; string orderby = "BookID ASC"; IQueryable MyDataQueryable = _DataRawBase.AsQueryable(); MyDataQueryable = MyDataQueryable.Where(where).OrderBy(orderby); 现在我想查询MyDataQueryable来执行某些字段的SUM(也许是平均值)。 我怎么会这样呢? 就像是: double mysum = MyDataQueryable.Sum(“Price”); 会好的…

是否可以使用LINQ进行列表操作?

这可能是一个愚蠢的问题,但我总是使用linq来选择项目。 但我想知道是否可以使用其关键字执行以下简单任务。 List ordersList . . . foreach(OrdersInfo OI in ordersList) if(OI.TYPE == “P”) OI.TYPE = “Project”; else OI.TYPE = “Support”;

使用linq从List 中删除连续重复项

我正在寻找一种方法来防止重复列表中的项目但仍保留订单。 例如 1, 2, 3, 4, 4, 4, 1, 1, 2, 3, 4, 4 应该成为 1, 2, 3, 4, 1, 2, 3, 4 我使用for循环非常优雅地完成它,检查下一项如下 public static List RemoveSequencialRepeats(List input) { var result = new List(); for (int index = 0; index < input.Count; index++) { if (index == input.Count – 1) { result.Add(input[index]); } else […]

Linq性能用于内存中的收集

我有一个列表:集合用户有大约100K +用户记录(所有用户对象从数据库中完全加载,包括Bio,名字,姓氏等字段)。 此应用程序从应用程序启动时从数据库中获取并保存在内存中。 然后我有以下代码: User cachedUser = users.FirstOrDefault(x => string.Equals(x.UserName, username, StringComparison.CurrentCultureIgnoreCase)); 我用它来从这个集合中获取用户。 但不知何故,我注意到这个操作非常慢。 使用Linq查询大型对象的内存集合时是否存在性能问题? 我是否应该在每次想要获得用户时调用数据库?

如何计算linq到sql查询中列值的总和?

我写这个查询: var query2 = (from p in behzad.Compare_closed_numbers_in_CRM_and_Billing_system_detail_counters where p.fileid == point.id select new { p.count }).ToArray(); 在count列中有任何值,我想要计算所有的计数值。 例如: 我该如何植入?谢谢。