Questions tagged «linq»

语言集成查询(LINQ)是Microsoft .NET Framework组件,它向.NET语言添加了本机数据查询功能。请考虑在适当的时候使用更详细的标签,例如[linq-to-sql],[linq-to-entities] / [entity-framework]或[plinq]

4
Linq中的多个WHERE子句
我是LINQ的新手,想知道如何执行多个where子句。这就是我要实现的:通过过滤掉某些用户名来返回记录。我尝试了下面的代码,但未按预期工作。 DataTable tempData = (DataTable)grdUsageRecords.DataSource; var query = from r in tempData.AsEnumerable() where ((r.Field<string>("UserName") != "XXXX") || (r.Field<string>("UserName") != "XXXX")) select r; DataTable newDT = query.CopyToDataTable(); 我在这里先向您的帮助表示感谢!!!
75 linq  linq-to-sql 

6
检查LINQ的FirstOrDefault是否存在KeyValuePair
我有一个类型的字典 Dictionary<Guid,int> 我想使用条件返回满足条件的第一个实例 var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0) 但是,如何检查我是否真的在找回KeyValuePair?我似乎无法使用!=或==在没有编译器错误的情况下检查default(KeyValuePair)。有一个类似的线程在这里并不十分似乎有一个解决方案。实际上,我可以通过获取密钥并检查Guid的默认值来解决我的特定问题,但是我很好奇是否可以通过keyvaluepair做到这一点。谢谢
75 c#  linq  null 

9
如何在多个字段中使用LINQ Distinct()
我有以下来自数据库的EF类(简化) class Product { public string ProductId; public string ProductName; public string CategoryId; public string CategoryName; } ProductId是表的主键。 对于数据库设计者做出的错误设计决定(我无法修改),我在表中有CategoryId和CategoryName。 我需要一个DropDownList的使用(不同)CategoryId的价值,并CategoryName为文本。因此,我应用了以下代码: product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct(); 从逻辑上讲,它应该使用CategoryId和CategoryName作为属性创建一个匿名对象。在Distinct()保证有没有重复对(CategoryId,CategoryName)。 但实际上它不起作用。就我所理解的Distinct()作品而言,收藏中只有一个领域,否则就忽略了它们……对吗?有什么解决方法吗?谢谢! 更新 对不起,product是: List<Product> product = new List<Product>(); 我找到了一种获得与以下结果相同的替代方法Distinct(): product.GroupBy(d => new {d.CategoryId, d.CategoryName}) .Select(m => new {m.Key.CategoryId, m.Key.CategoryName})
75 c#  linq  distinct 


4
将两个列表映射到C#中的字典中
给定两个 相同大小的IEnumerables ,如何 使用Linq将其转换为a Dictionary ? IEnumerable<string> keys = new List<string>() { "A", "B", "C" }; IEnumerable<string> values = new List<string>() { "Val A", "Val B", "Val C" }; var dictionary = /* Linq ? */; 预期的输出是: A: Val A B: Val B C: Val C 我想知道是否有一些简单的方法来实现它。 我应该担心表现吗?如果我有大量收藏怎么办? 我没有一种更简单的方法来执行此操作,目前我正在这样做: 我有一个Extension方法,该方法将循环IEnumerable为我提供元素和索引号。 …

5
形成两个列表的并集的最简单方法
比较两个列表(例如A和B)的元素并仅将A中不存在的元素添加到A中的最简单方法是什么? 为了说明这一点,取列表A = {1,2,3}列表B = {3,4,5} 所以在操作AUB之后,我想要列表A = {1,2,3,4,5}
74 c#  .net  linq  list  union 

1
LINQ按多个字段分组-语法帮助
例如2以便按多列分组需要进行的更正是什么 例子1 var query = from cm in cust group cm by new { cm.Customer, cm.OrderDate } into cms select new { Key1 = cms.Key.Customer,Key2=cms.Key.OrderDate,Count=cms.Count() }; 示例2(不正确) var qry = cust.GroupBy(p => p.Customer, q => q.OrderDate, (k1, k2, group) => new { Key1 = k1, Key2 = k2, Count = …
74 c#  linq  group-by 

7
从List <T>到数组T []的转换
是否有将强类型的一小段路List&lt;T&gt;到同类型的数组,例如:List&lt;MyClass&gt;到MyClass[]? 简而言之,我的意思是一个方法调用,或者至少短于: MyClass[] myArray = new MyClass[list.Count]; int i = 0; foreach (MyClass myClass in list) { myArray[i++] = myClass; }
73 c#  .net  arrays  linq  list 

3
是否可以通过布尔条件将IEnumerable分为两个,而无需两个查询?
我可以使用LINQ和仅一个查询/ LINQ语句将其IEnumerable&lt;T&gt;分成两部分IEnumerable&lt;T&gt;吗? 我想避免重复IEnumerable&lt;T&gt;两次。例如,是否可以合并下面的最后两个语句,使allValues仅被遍历一次? IEnumerable&lt;MyObj&gt; allValues = ... List&lt;MyObj&gt; trues = allValues.Where( val =&gt; val.SomeProp ).ToList(); List&lt;MyObj&gt; falses = allValues.Where( val =&gt; !val.SomeProp ).ToList();
73 .net  linq 


7
对一个列表进行另一个排序
我有2个列表对象,一个只是一个整数列表,另一个是一个对象列表,但这些对象具有ID属性。 我想要做的是按照与整数列表相同的排序顺序按其ID对对象列表进行排序。 我已经玩了一段时间了,现在想让它正常工作,到目前为止没有喜悦, 这是我到目前为止所拥有的... //************************** //*** Randomize the list *** //************************** if (Session["SearchResultsOrder"] != null) { // save the session as a int list List&lt;int&gt; IDList = new List&lt;int&gt;((List&lt;int&gt;)Session["SearchResultsOrder"]); // the saved list session exists, make sure the list is orded by this foreach(var i in IDList) { SearchData.ReturnedSearchedMembers.OrderBy(x =&gt; …
73 c#  linq  list  sorting 

2
XElement命名空间(如何?)
如何使用节点前缀创建xml文档,例如: &lt;sphinx:docset&gt; &lt;sphinx:schema&gt; &lt;sphinx:field name="subject"/&gt; &lt;sphinx:field name="content"/&gt; &lt;sphinx:attr name="published" type="timestamp"/&gt; &lt;/sphinx:schema&gt; 当我尝试运行类似new XElement("sphinx:docset")异常的东西时 未处理的异常:System.Xml.XmlException:名称中不能包含':'字符,十六进制值0x3A。 在System.Xml.XmlConvert.VerifyNCName(字符串名称,ExceptionType exceptionTyp E) 在System.Xml.Linq.XName..ctor(NS的XNamespace,字符串的localName) 在System.Xml.Linq.XNamespace.GetName(字符串的localName) 在系统.Xml.Linq.XName.Get(字符串expandName)
73 c#  xml  linq  namespaces 

6
如何在LINQ中进行子查询?
这是我要转换为LINQ的查询示例: SELECT * FROM Users WHERE Users.lastname LIKE '%fra%' AND Users.Id IN ( SELECT UserId FROM CompanyRolesToUsers WHERE CompanyRoleId in (2,3,4) ) CompanyRolesToUsers和之间存在FK关系Users,但它是多对多关系,并且CompanyRolesToUsers是联结表。 我们已经构建了大部分站点,并且已经通过使用PredicateExtensions类构建Expressions来完成了大部分过滤工作。 简单过滤器的代码如下所示: if (!string.IsNullOrEmpty(TextBoxLastName.Text)) { predicateAnd = predicateAnd.And(c =&gt; c.LastName.Contains( TextBoxLastName.Text.Trim())); } e.Result = context.Users.Where(predicateAnd); 我正在尝试为另一个表中的子选择添加谓词。(CompanyRolesToUsers) 我想要添加的是执行以下操作的操作: int[] selectedRoles = GetSelectedRoles(); if( selectedRoles.Length &gt; 0 ) { …
73 c#  linq  linq-to-sql 

1
为什么LINQ .Where(predicate).First()比.First(predicate)快?
我正在做一些性能测试,发现LINQ表达式像 result = list.First(f =&gt; f.Id == i).Property 比慢 result = list.Where(f =&gt; f.Id == i).First().Property 这似乎与直觉相反。我以为第一个表达式会更快,因为一旦满足谓词,它就可以停止对列表进行迭代,而我以为该.Where()表达式可以在调用.First()结果子集之前对整个列表进行迭代。即使后者短路,也不应比直接使用First更快。 下面是两个非常简单的单元测试,它们说明了这一点。当在.NET和Silverlight 4上使用TestWhereAndFirst进行优化编译时,其速度大约比TestFirstOnly快30%。我试图使谓词返回更多结果,但是性能差异是相同的。 谁能解释为什么.First(fn)比它慢.Where(fn).First()?与.Count(fn)相比,我看到了类似的反直观结果.Where(fn).Count()。 private const int Range = 50000; private class Simple { public int Id { get; set; } public int Value { get; set; } } [TestMethod()] public void TestFirstOnly() { …
73 c#  .net  performance  linq 

5
Linq排序依据,分组依据和各组排序?
我有一个看起来像这样的对象: public class Student { public string Name { get; set; } public int Grade { get; set; } } 我想创建以下查询:按学生姓名对成绩进行分组,按成绩对每个学生组进行排序,并按每个组中的最高成绩对组进行排序。 因此它将如下所示: A 100 A 80 B 80 B 50 B 40 C 70 C 30 我创建了以下查询: StudentsGrades.GroupBy(student =&gt; student.Name) .OrderBy(studentGradesGroup =&gt; studentGradesGroup.Max(student =&gt; student.Grade)); 但这返回了IEnumerable IGrouping,并且我无法对列表进行排序,除非在另一个foreach查询中执行此操作,然后使用将结果添加到其他列表中AddRange。 有没有更漂亮的方法可以做到这一点?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.