Tag: linq

LinqPad不用C#语句返回结果

已经很晚了,所以这一定是愚蠢的。 我有LinqPad连接到我的数据库,似乎无法得到最简单的查询结果。 var q = from app in AppInstances select new { AppId = app.AppId }; 当我运行它,LinqPad说,它成功执行(C#语句模式)。 没有什么反感。 我可以写下面非常简单的Lambda(C#expression式模式): AppInstances.Select (p => p.AppId) 那是有效的。 为什么? 我宁愿使用非lambda查询构buildfunction。 我确信这是一件傻事。

linq / lambda中的多行foreach循环

我正在寻找一种方法来改变下面的代码: foreach (Contact _contact in contacts) { _contact.ID = 0; _contact.GroupID = 0; _contact.CompanyID = 0; } 我想改变这种使用LINQ / lambda到类似于: contacts.ForEach(c => c.ID = 0; c.GroupID = 0; c.CompanyID = 0); 但是,这是行不通的。 有没有什么办法可以在linq foreach中做多行,而不是写一个函数来做到这一点?

如何在Linq订购小组成果?

我有以下linq查询,这工作正常。 我不知道我是如何订购集团的结果。 from a in Audits join u in Users on a.UserId equals u.UserId group a by a.UserId into g select new { UserId = g.Key, Score = g.Sum(x => x.Score) } 结果目前按UserId升序排列。 我在分数下降后。 谢谢 :)

有没有办法在LINQ查询语法中使用Distinct?

有没有办法重写: var tbl = ds.TABLES; var q = from c in tbl select c.TABLE_TYPE; string s = ""; foreach (var item in q.Distinct()) { s += "[" + item + "]"; } MessageBox.Show(s); 所以Distinct()调用在LINQ查询中?

如何select哪里不存在使用LINQ?

我必须列出要分配给“ 员工 ”的所有“ class次 ”数据,但是如果class次数据已经存在于员工数据中,则不得包含class次数据。 让我们看看图片样本。 这个查询解决了这个问题。 我在这里find了这个: 斯科特的博客 select * from shift where not exists (select 1 from employeeshift where shift.shiftid = employeeshift.shiftid and employeeshift.empid = 57); 我们来看看结果: 现在我的问题是,我怎么能在linQ中做到这一点? 我正在使用entity framework。 希望有人可以帮忙。 非常感谢!!!

从List <T>转换为数组T

有一个简单的方法将强types的List<T>转换为相同types的数组,例如: List<MyClass>为MyClass[] ? 简而言之,我的意思是一个方法调用,或者至less比: MyClass[] myArray = new MyClass[list.Count]; int i = 0; foreach (MyClass myClass in list) { myArray[i++] = myClass; }

一个面向对象的程序员怎么能够围绕数据库驱动的编程?

我已经在C#和Java中进行了一年多的编程,对于面向对象的编程有一个很好的把握,但是我的新的项目需要一个数据库驱动的模型。 我正在使用C#和Linq这似乎是一个非常强大的工具,但我在devise一个数据库围绕我的面向对象的方法麻烦。 我的两个主要问题是: 我如何处理我的数据库中的inheritance? 比方说,我正在build立一个员工名册,我有一个抽象类Event。 从事件我派生了抽象类ShiftEvent和StaffEvent。 然后我有具体的类Shift(从ShiftEvent派生)和StaffTimeOff(派生自StaffEvent)。 还有其他派生类,但为了争辩,这些就足够了。 我应该有一个ShiftEvents和StaffEvents单独的表? 也许我应该为每个具体的课程分开表格? 这两种方法似乎都会在与数据库交互时给我带来麻烦。 另一种方法可能是有一个事件表,这个表对于我的任何具体类中的每种types的数据都有可以为空的列。 所有这些方法都觉得他们可能会妨碍可扩展性。 我可能还没有考虑过第三种方法。 我的第二个问题: 如何以面向对象的方式处理集合和一对多关系? 假设我有一个Products类和一个Categories类。 类别的每个实例都将包含一个或多个产品,但产品本身不应包含类别知识。 如果我想在数据库中实现这一点,那么每个产品都需要一个映射到类别表的类别标识。 但是从OO的观点来看,这会引入更多的耦合。 产品甚至不应该知道类别的存在,更不用说包含类别ID的数据字段! 有没有更好的办法?

EntitySet – 有一个理智的原因,IList.Add不设置分配?

有3种方式将项目添加到大多数列表中… 通过直接的公共API方法,通常Add(SomeType) 通过通用的IList<T>.Add(T)接口 通过非通用的IList.Add(object)接口方法 而你通常期望他们的performance差不多一样。 但是,LINQ的EntitySet<T>是… 3.5和4.0的特有; IList API 不会将这个集合标记为“分配” – 其他两种机制 – 这听起来微不足道,但重要的是它严重影响了样板代码中的序列化(即导致它被跳过)。 例: EntitySet<string> set1 = new EntitySet<string>(); set1.Add("abc"); Debug.Assert(set1.Count == 1); // pass Debug.Assert(set1.HasLoadedOrAssignedValues, "direct"); // pass EntitySet<string> set2 = new EntitySet<string>(); IList<string> typedList = set2; typedList.Add("abc"); Debug.Assert(set2.Count == 1); // pass Debug.Assert(set2.HasLoadedOrAssignedValues, "typed list"); // pass EntitySet<string> set3 = new EntitySet<string>(); […]

Async在linq select中等待

我需要修改一个现有的程序,它包含以下代码: var inputs = events.Select(async ev => await ProcessEventAsync(ev)) .Select(t => t.Result) .Where(i => i != null) .ToList(); 但是这对我来说似乎很奇怪,首先在select中使用async和await 。 根据Stephen Cleary的这个答案 ,我应该可以放弃这些。 然后Select第二个Select结果。 这是不是意味着这个任务不是asynchronous的,并且是同步执行的(这么多努力),或者这个任务是asynchronous执行的,而当它完成时,执行其余的查询。 我应该按照斯蒂芬·克里里的另一个答案来写下面的代码: var tasks = await Task.WhenAll(events.Select(ev => ProcessEventAsync(ev))); var inputs = tasks.Where(result => result != null).ToList(); 这是完全一样的吗? var inputs = (await Task.WhenAll(events.Select(ev => ProcessEventAsync(ev)))) .Where(result => result != null).ToList(); 虽然我在这个项目上工作,但我想改变第一个代码示例,但我并不太热衷于改变(exception工作)的asynchronous代码。 […]

ToList()。ForEach in Linq

我是Linq的新手。 我想要像这样在foreach语句中设置两个值 我的实际代码是这样的 foreach (Employee emp in employees) { foreach(Department dept in emp.Departments) { dept.SomeProperty = null; } collection.AddRange(emp.Departments); } 很less有重构把上面的东西变成了这个 foreach (Employee emp in employees) { emp.Departments.ToList().ForEach(u => u.SomeProperty = null)) collection.AddRange(emp.Departments); } 但是我想要这样的东西 employees.ToList().Foreach(collection.AddRange(emp.Departments), emp.Departments.ToList().ForEach(u => u.SomeProperty = null))