Questions tagged «linq»

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

3
IQueryable,List,IEnumerator之间的区别?
我想知道IQueryable,List,IEnumerator和什么时候应该使用每一个之间有什么区别? 例如,当使用Linq到SQL时,我将执行以下操作: public List<User> GetUsers() { return db.User.where(/* some query here */).ToList(); } 现在,我想知道是否应该使用IQueryable。我不确定在列表中使用它的好处。

16
在C#中旋转列表的最简单方法
列表说我有一个列表 List<int> {1,2,3,4,5} 旋转意味着: => {2,3,4,5,1} => {3,4,5,1,2} => {4,5,1,2,3} 也许轮换不是最好的选择,但希望您理解我的意思 我的问题是,最简单的方法是什么(简而言之,C#4 Linq已准备就绪),并且不会受到性能(合理的性能)的影响 谢谢。
68 c#  arrays  linq  list 

1
如何在T4模板中使用Linq?
我正在使用T4为项目生成一些屏幕和中间层代码,并且希望使用Linq来简化我的一些模板代码。但是,当我尝试使用Linq时,模板会报告语法错误。
68 linq  t4 

5
在LINQ中向实体左加入?
我正在尝试将LINQ用于实体。 我在以下方面遇到问题:我希望它这样做: SELECT T_Benutzer.BE_User ,T_Benutzer_Benutzergruppen.BEBG_BE FROM T_Benutzer LEFT JOIN T_Benutzer_Benutzergruppen ON T_Benutzer_Benutzergruppen.BEBG_BE = T_Benutzer.BE_ID 我最接近的是: var lol = ( from u in Repo.T_Benutzer //where u.BE_ID == 1 from o in Repo.T_Benutzer_Benutzergruppen.DefaultIfEmpty() // on u.BE_ID equals o.BEBG_BE where (u.BE_ID == o.BEBG_BE || o.BEBG_BE == null) //join bg in Repo.T_Benutzergruppen.DefaultIfEmpty() // on …

10
为什么IEnumerable <T> .ToList <T>()返回List <T>而不是IList <T>?
扩展方法ToList()返回List&lt;TSource&gt;。按照相同的模式,ToDictionary()返回Dictionary&lt;TKey, TSource&gt;。 我很好奇为什么这些方法没有分别按IList&lt;TSource&gt;和键入其返回值IDictionary&lt;TKey, TSource&gt;。这似乎更奇怪,因为将ToLookup&lt;TSource, TKey&gt;其返回值键入为接口而不是实际的实现。 通过使用dotPeek或其他反编译器查看这些扩展方法的源代码,我们看到以下实现(ToList()由于它更短而显示): public static List&lt;TSource&gt; ToList&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; source) { if (source == null) throw Error.ArgumentNull("source"); return new List&lt;TSource&gt;(source); } 那么,为什么此方法将其返回值键入接口的特定实现而不是接口本身呢?唯一的变化是返回类型。 我很好奇,因为IEnumerable&lt;&gt;扩展名的签名非常一致,除了这两种情况。我一直认为这有点奇怪。 另外,为了使事情更加混乱,状态文档ToLookup(): 根据指定的键选择器函数从IEnumerable创建查找。 但返回类型为ILookup&lt;TKey, TElement&gt;。 在Edulinq中,Jon Skeet提到返回类型是,List&lt;T&gt;而不是IList&lt;T&gt;,但不再涉及主题。 广泛的搜索没有得到任何答案,所以在这里我问你: 不将返回值键入为接口背后有任何设计决定,还是偶然?

3
如何在动态集合中使用LINQ
有没有一种方法可以将dynamic对象转换为IEnumerableType以使用属性过滤集合。 dynamic data = JsonConvert.DeserializeObject(response.Content); 我需要访问这样的内容 var a = data.Where(p =&gt; p.verified == true) 有任何想法吗?
67 c#  linq 

4
“ LINQ to Entities不支持LINQ表达式节点类型'Invoke'”-烦死了!
稍后在我的EF中,我试图传递一个匿名函数以用作Linq查询的一部分。该函数将传入INT并返回BOOL(u.RelationTypeId为INT)。以下是我的函数的简化版本: public IEnumerable&lt;UserBandRelation&gt; GetBandRelationsByUser(Func&lt;int, bool&gt; relation) { using (var ctx = new OpenGroovesEntities()) { Expression&lt;Func&lt;UsersBand, bool&gt;&gt; predicate = (u) =&gt; relation(u.RelationTypeId); var relations = ctx.UsersBands.Where(predicate); // mapping, other stuff, back to business layer return relations.ToList(); } } 但是,我得到上述错误。似乎我通过从函数构建谓词来使所有事情都正确。有任何想法吗?谢谢。

1
转换IAsyncEnumerable到列表
因此,在C#8中,我们增加了IAsyncEnumerable接口。 如果我们有一个法线,IEnumerable我们可以制作一个List或几乎任何我们想要的其他收藏。感谢那里的Linq。 var range = Enumerable.Range(0, 100); var list = range.ToList(); 好吧,现在我想异步地将其转换IAsyncEnumerable为a List和this。该情况下已经有Linq实现了吗?如果没有,那我该如何转换呢?

2
如何在.NET Core 3.0实体框架中执行组联接?
随着对.NET Core 3.0的更改,我得到了 ... NavigationExpandingExpressionVisitor'失败。这可能表示EF Core中存在错误或限制。有关更多详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2101433。)---&gt; System.InvalidOperationException:处理LINQ表达式'GroupJoin,... 这是一个非常简单的查询,因此必须有一种在.NET CORE 3.0中执行该查询的方法: var queryResults1 = await patients .GroupJoin( _context.Studies, p =&gt; p.Id, s =&gt; s.Patient.Id, (p, studies) =&gt; new { p.DateOfBirth, p.Id, p.Name, p.Sex, Studies =studies.Select(s1=&gt;s1) } ) .AsNoTracking().ToListAsync(); 我基本上是在寻找一个Linq查询(或上面的方法语法),它将查询与研究合并到患者中,并将研究设置为空列表,如果给定患者没有研究,则将其设置为null。 有任何想法吗?这在.NET Core 2.2中正常工作。此外,上面的MSFT链接还提到,密钥突破更改与客户端评估有关,并且避免了生成的查询读取整个表,然后必须对这些表进行联接或过滤。但是,通过此简单查询,可以在服务器端轻松进行联接。

1
如果在ToLookup之前放一个额外的ToArray会更快吗?
我们有一个简短的方法将.csv文件解析为查找: ILookup&lt;string, DgvItems&gt; ParseCsv( string fileName ) { var file = File.ReadAllLines( fileName ); return file.Skip( 1 ).Select( line =&gt; new DgvItems( line ) ).ToLookup( item =&gt; item.StocksID ); } 以及DgvItems的定义: public class DgvItems { public string DealDate { get; } public string StocksID { get; } public string StockName …
10 c#  linq 

1
未从FirstOrDefault公开的可空引用类型信息
我想测试C#8.0中新的可为空的引用类型功能。 我启动了一个针对.NET Core 3.0的新项目,在.csproj文件中启用了可为空的引用类型,并开始编码。我创建了一个简单的列表,该列表采用a string[]并string在等于的数组中返回abc。现在,由于不确定abc该数组中是否实际存在,因此我使用FirstOrDefault(),null如果未找到匹配项,则默认为。 using System; using System.Linq; public string FindArgument(string[] args) { var arg = args.FirstOrDefault(x =&gt; x == "abc"); return arg; } 我的方法的返回值string,这应该现在是非空的类型。由于FirstOrDefault()可能会返回null,因此我希望上述方法在返回may null arg变量时会产生警告。它不是。 查看FirstOrDefault()Visual Studio中的签名,很清楚为什么:该方法返回一个string,而不是string?我期望的可为空的等效项。 使用下面的方法主体确实会产生我期望的警告: var arg = args.Contains("abc") ? "abc" : null; return arg; System.Linq在面向.NET Core 3.0时,系统库(在此示例中)是否真的不公开可空性信息?
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.