Tag: linq to objects

String.StartsWith不使用波形符(“〜”)字符LINQ to SQL?

出于某种原因,我使用String.StartsWith()调用IEnumerable.Where()似乎给出了不同的结果,具体取决于它是在LINQ-to-SQL还是标准LINQ(-to-objects)中使用。 如果我在ToList()上添加一个对同一个调用的调用,我会得到不同的结果: var withToList = MyDataContext.MyEntities.ToList().Where(entity => entity.Name.StartsWith(“~Test: My Test String”)); // withToList.Count() returns 5, which is what I expect. var direct = MyDataContext.MyEntities.Where(entity => entity.Name.StartsWith(“~Test: My Test String”)); // direct.Count() returns 0 我的理解是,与LINQ中的其他一些运算符/方法不同,Where()方法不要求谓词是SQL可翻译的; 它在客户端执行,因此可以是任意.NET代码。 (我肯定会在其中抛出其他非SQL代码并获得成功结果)。 我甚至得到了一个链接,其中安德斯自己暗示这应该有效。 有没有搞错? 编辑:我发现了问题; 它与我的搜索字符串中存在波浪号有关。 我更新了标题以反映这一点。

在LINQ中对IEnumerable进行排序

如何对给定的示例进行排序。 IEnumerable eList = new List() { new extra{ id = 1, text = “a”}, new extra{ id = 2, text = “g”}, new extra{ id = 3, text = “i”}, new extra{ id = 4, text = “e”}, new extra{ id = 5, text = “f”}, new extra{ id = 6, text = “d”}, […]

使用LINQ更新字符串数组

我正在尝试使用LINQ创建一个使用新版本字符串更新AssemblyInfo文件的方法。 我可以成功提取我需要更新的字符串,但不知道如何更新集合中的项目。 我是LINQ的新手,所以任何建议都表示赞赏! private void UpdateVersion(string file, string version) { string[] asmInfo = File.ReadAllLines(file); var line = asmInfo.Single(x => x.Trim().StartsWith(“[assembly: AssemblyVersion”)); line = “[assembly: AssemblyVersion\”” + version + “\”)]”; // This doesn’t work – it’s writing the original file back File.WriteAllLines(file, asmInfo); }

如何在不首先将整个列表加载到内存中的情况下使用Linq to Sql实现SkipWhile?

我需要通过降序发布日期来订购存储在数据库中的文章,然后在Id == 100的文章之后获取前20条记录。 这就是我想对Linq做的事情: IQueryable articles = db.Articles .OrderByDescending(a => a.PublicationDate) .SkipWhile(a => a.Id != 100) .Take(20); 但是,这会生成NotSupportedException,因为Linq to Sql不支持SkipWhile (请参阅此处 )。 一种可能的解决方案是执行查询,然后使用Linq将SkipWhile应用于Object: IEnumerable articles = db.Articles .OrderByDescending(a => a.PublicationDate) .ToList() .SkipWhile(a => a.Article.Id != 100) .Take(20); 但这意味着我需要首先将整个有序列表加载到内存中,然后在Id == 100之后再加载20篇文章。 有没有办法避免这种巨大的内存消耗? 更一般地说,在SQL中实现这一目标的最佳方法是什么?

过滤模板列表,属性名称为字符串

嗨,我必须在generics类上应用filter。 样本类如下 public class Sample { List sourceList = new List(); public void applyFilter(string propertyName , EnumOperator operator , object value) { } } 在这里,我想使用linq或动态linq实现filter,但是没有得到任何积极的方向来实现这个function。 请给我一些积极的方向,以便我可以实现此function。 谢谢。

Linq Lambda与查询语法性能

我今天在我的项目中看到了一个linq查询语法,它以这种方式从特定条件的List项中计算: int temp = (from A in pTasks where A.StatusID == (int)BusinessRule.TaskStatus.Pending select A).ToList().Count(); 我想通过写它来重构它就像使用Count()来使更多的可读性和我认为它将是性能明智也好,所以我写道: int UnassignedCount = pTasks.Count(x => x.StatusID == (int)BusinessRule.TaskStatus.Pending); 但是当我通过StopWatch进行检查时,lambda表达式所经历的时间总是超过查询synax: Stopwatch s = new Stopwatch(); s.Start(); int UnassignedCount = pTasks.Count(x => x.StatusID == (int)BusinessRule.TaskStatus.Pending); s.Stop(); Stopwatch s2 = new Stopwatch(); s2.Start(); int temp = (from A in pTasks where A.StatusID == […]

为什么使用匿名类型工作并使用不在GroupBy中的显式类型?

我有一个问题,我希望组类型强类型,但如果我这样做不正确分组。 看下面的代码…… using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication35 { class Program { static void Main(string[] args) { List foos = new List(); foos.Add(new Foo() { Key = “Test” }); foos.Add(new Foo() { Key = “Test” }); foos.Add(new Foo() { Key = “Test” }); var groups = foos.GroupBy(entry => new { GroupKey = entry.Key […]

如何在linq中使用IN运算符

我正在查询视图并使用名为status的列过滤结果。 我想查询它,以便我可以通过使用IN运算符来搜索具有不同状态的行,就像我在SQL中一样。 如此: SELECT * FROM VIEW WHERE状态(’….’,’…..’) 我怎样才能做到这一点?

如何通过double值对List 进行排序?

这听起来很简单但不是那么多。 我想根据T的一个属性订购一个List,它是双重类型。

LINQ Group连续时间

假设我有一个看起来像这样的简单结构: public class Range { public DateTime Start { get; set; } public DateTime End { get; set; } public Range(DateTime start, DateTime end) { this.Start = start; this.End = end; } } 我创建了一个像这样的集合: var dr1 = new Range(new DateTime(2011, 11, 1, 12, 0, 0), new DateTime(2011, 11, 1, 13, 0, 0)); var dr2 = […]