Questions tagged «linq»

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

8
LINQ选择与匿名类型不同
所以我有一个对象集合。确切的类型并不重要。因此,我要从中提取一对特定属性的所有唯一对,从而: myObjectCollection.Select(item=>new { Alpha = item.propOne, Bravo = item.propTwo } ).Distinct(); 所以我的问题是:在这种情况下,Distinct会使用默认的对象等于(对我来说是无用的,因为每个对象都是新的)还是可以被告知做不同的等于(在这种情况下,等于Alpha和Bravo的值) =>相等的实例)?如果没有做到这一点,有什么方法可以实现?

4
从另一个列表ID对列表进行排序
我有一个带有一些标识符的列表,像这样: List<long> docIds = new List<long>() { 6, 1, 4, 7, 2 }; Morover,我还有另一个<T>项目列表,这些列表由上述ID表示。 List<T> docs = GetDocsFromDb(...) 我需要在两个集合中保持相同的顺序,以便其中的项List<T>必须与第一个集合处于相同的位置(由于搜索引擎评分的原因)。并且此过程无法在GetDocsFromDb()函数中完成。 如有必要,可以将第二个列表更改为其他结构(Dictionary<long, T>例如),但是我不希望更改它。 是否有任何简单有效的方法来使用LINQ进行“根据某些ID进行排序”?
150 c#  linq  sorting  collections 

4
使用Linq将对象列表分组为新的对象列表分组列表
我不知道这在Linq中是否可行,但是这里... 我有一个对象: public class User { public int UserID { get; set; } public string UserName { get; set; } public int GroupID { get; set; } } 我返回的列表可能如下所示: List<User> userList = new List<User>(); userList.Add( new User { UserID = 1, UserName = "UserOne", GroupID = 1 } ); userList.Add( …
149 c#  linq 

6
LINQ to SQL-具有多个联接条件的左外部联接
我有以下SQL,我正尝试将其转换为LINQ: SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100 我已经看到了左外部连接(即into x from y in x.DefaultIfEmpty()等)的典型实现,但是不确定如何引入其他连接条件(AND f.otherid = 17) 编辑 为什么AND f.otherid = 17条件是JOIN而不是WHERE子句的一部分?因为f某些行可能不存在,所以我仍然希望包含这些行。如果在JOIN之后在WHERE子句中应用了条件-那么我就没有想要的行为。 不幸的是: from p in context.Periods join f in context.Facts on p.id …
148 c#  sql  linq  linq-to-sql  outer-join 

12
检查列表是否包含包含字符串的元素并获取该元素
在寻找这个问题的答案时,我遇到了使用LINQ的类似问题,但是由于我不熟悉它,所以我无法完全理解它们(因此无法实现它们)。我基本上想要的是: 检查列表中的任何元素是否包含特定字符串。 如果是这样,请获取该元素。 老实说,我不知道该怎么做。我能想到的是这样(当然不起作用): if (myList.Contains(myString)) string element = myList.ElementAt(myList.IndexOf(myString)); 我知道为什么它不起作用: myList.Contains()不返回true,因为它将检查列表的整个元素是否与我指定的字符串匹配。 myList.IndexOf() 不会发现任何情况,因为再次检查情况是,它将检查与字符串匹配的元素。 仍然,我不知道如何解决这个问题,但是我认为我必须按照类似的问题中的建议使用LINQ。话虽如此,如果是这种情况,我想请回答者在他们的示例中向我解释LINQ的用法(正如我所说的,我在使用C#时并没有为此而烦恼)。在此先感谢大家(还有gal?)。 编辑:我想出了一个解决方案;只需遍历列表,检查当前元素是否包含字符串,然后将字符串设置为等于当前元素。我想知道,是否有比这更有效的方法? string myString = "bla"; string element = ""; for (int i = 0; i < myList.Count; i++) { if (myList[i].Contains(myString)) element = myList[i]; }
146 c#  .net  linq  list  contains 

8
为什么在哪里和选择优于仅选择?
我有一堂课,像这样: public class MyClass { public int Value { get; set; } public bool IsValid { get; set; } } 实际上,它要大得多,但这会重现问题(古怪)。 我想获取Value实例有效的的总和。到目前为止,我已经找到了两种解决方案。 第一个是这样的: int result = myCollection.Where(mc => mc.IsValid).Select(mc => mc.Value).Sum(); 第二个是: int result = myCollection.Select(mc => mc.IsValid ? mc.Value : 0).Sum(); 我想得到最有效的方法。首先,我认为第二个会更有效。然后我的理论部分开始说:“好,一个是O(n + m + m),另一个是O(n + n)。第一个应该表现更好,有更多的无效项,而第二个应该表现更好。少”。我认为他们会表现一样。编辑:然后@Martin指出Where和Select相结合,因此它实际上应该是O(m + …
145 c#  linq 

8
检查数组是否是另一个数组的子集
关于如何检查该列表是否是另一个列表的子集有任何想法吗? 具体来说,我有 List<double> t1 = new List<double> { 1, 3, 5 }; List<double> t2 = new List<double> { 1, 5 }; 如何使用LINQ检查t2是t1的子集?
145 c#  list  linq  subset 

12
如何获取IEnumerable中元素的索引?
我这样写: public static class EnumerableExtensions { public static int IndexOf<T>(this IEnumerable<T> obj, T value) { return obj .Select((a, i) => (a.Equals(value)) ? i : -1) .Max(); } public static int IndexOf<T>(this IEnumerable<T> obj, T value , IEqualityComparer<T> comparer) { return obj .Select((a, i) => (comparer.Equals(a, value)) ? i : -1) …
144 c#  .net  linq  ienumerable  indexof 

10
在XDocument的任何深度按名称查询元素
我有一个XDocument对象。我想使用LINQ在任何深度查询具有特定名称的元素。使用时Descendants("element_name"),我只会得到当前级别的直接子级元素。我要寻找的是XPath中的“ // element_name”等价...我应该只使用XPath,还是可以使用LINQ方法来做到这一点?谢谢。
143 c#  .net  xml  linq  linq-to-xml 

11
FirstOrDefault:非null的默认值
据我了解,在Linq中,该方法FirstOrDefault()可以返回Default非null值。我还没有解决的是,当查询结果中没有项目时,此(和类似方法)可以返回null以外的其他东西。有什么特殊的方法可以设置它,以便在没有特定查询的值的情况下,返回一些预定义值作为默​​认值?
142 .net  linq 

4
在IGrouping中获取“值”属性
我有一个像这样的数据结构 public DespatchGroup(DateTime despatchDate, List<Products> products); 我正在努力做... var list = new List<DespatchGroup>(); foreach (var group in dc.GetDespatchedProducts().GroupBy(i => i.DespatchDate)) { // group.Values is not correct... how do I write this? list.Add(new DespatchGroup(group.Key, group.Values); } 我显然不明白,IGrouping因为我看不到如何实际访问组中的数据记录!

10
LINQ按空列排序,其中顺序升序,并且空值应为最后
我正在尝试按价格对产品列表进行排序。 结果集需要按列从低到高的价格列出产品LowestPrice。但是,此列可以为空。 我可以按照降序对列表进行排序,如下所示: var products = from p in _context.Products where p.ProductTypeId == 1 orderby p.LowestPrice.HasValue descending orderby p.LowestPrice descending select p; // returns: 102, 101, 100, null, null 但是我不知道如何按升序排序。 // i'd like: 100, 101, 102, null, null
141 c#  linq  sorting 

6
LINQ to SQL左外部联接
此查询是否等同于LEFT OUTER联接? //assuming that I have a parameter named 'invoiceId' of type int from c in SupportCases let invoice = c.Invoices.FirstOrDefault(i=> i.Id == invoiceId) where (invoiceId == 0 || invoice != null) select new { Id = c.Id , InvoiceId = invoice == null ? 0 : invoice.Id }

9
LINQ to Entities不支持指定的类型成员'Date'。仅初始化器,实体成员和实体导航属性
在实体框架中使用此代码,我收到以下错误。我需要获取特定日期的所有行,其DateTimeStart格式为DataType2013-01-30 12:00:00.000 码: var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference) .Where(x => x.DateTimeStart.Date == currentDateTime.Date); 错误: base {System.SystemException} = {“ LINQ to Entities不支持指定的类型成员'Date'。仅支持初始化程序,实体成员和实体导航属性。”} 任何想法如何解决?


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.