Articles of linq

AutoMapper并将日期时间转换为字符串

我无法理解以下问题。 我有一种感觉它是LINQ和表达式树的限制,但不确定如何接受lambda体。 我可以在不创建自定义转换器的情况下实现此目的 Mapper.CreateMap() .ForMember(x => x.DateCreated, opt => opt.MapFrom(src => { var dt = (DateTime)src.DateCreated; return dt.ToShortDateString(); })); 我收到此错误: 带有语句主体的lambda表达式无法转换为表达式树

动态LINQ直接用户输入,有任何危险吗?

我在ASP.NET MVC应用程序中有一个表,我希望它可以排序(服务器端)并使用AJAX过滤。 我希望它在其他地方使用起来相当容易,并且不想将排序和过滤硬编码到查询表达式中,所以我找到了一种动态构建表达式的方法,我发现最好的方法就是使用Dynamic LINQ 。 来自以下URL的用户输入直接插入到动态Where或OrderBy中。 /Orders?sortby=OrderID&order=desc&CustomerName=Microsoft 这将导致两个表达式: OrderBy(“OrderID descending”) Where(@”CustomerName.Contains(“”Microsoft””)”) 虽然我明白它不会直接在数据库中抛出,并且在这里插入直接SQL不会起作用,因为它无法反映到属性并且它是类型安全的所有,我想知道是否有人比我更有创意无论如何都可以找到一种方法来利用它。 我能想到的一个漏洞是,可以对表中不可见的属性进行排序/过滤,但这并不是有害的,因为它们仍然不会被显示,并且可以通过散列来防止它。 我允许直接用户输入的唯一方法是使用OrderBy和Where。 只是确定,谢谢:)

为什么我得到“collections被修改; 枚举操作可能不执行“不修改枚举的集合?

我有两个字符串集合:CollectionA是存储在系统中的对象的StringCollection属性,而CollectionB是在运行时生成的List。 如果存在任何差异,CollectionA需要更新以匹配CollectionB。 所以我设计了我期望的一个简单的LINQ方法来执行删除。 var strDifferences = CollectionA.Where(foo => !CollectionB.Contains(foo)); foreach (var strVar in strDifferences) { CollectionA.Remove(strVar); } 但我得到一个”Collection was modified; enumeration operation may not execute”错误的strDifferences …即使它是一个单独的可枚举的被修改集合! 我最初明确地设计了这个来逃避这个错误,因为我的第一个实现会产生它(因为我在CollectionA进行枚举,只是删除了!CollectionB.Contains(str) )。 谁能解释为什么这个枚举失败?

用逗号分隔列表,用“和”代替最后一个逗号

我想在C#中创建一个以逗号分隔的列表,其中单词“and”作为最后一个分隔符。 string.Join(“, “, someStringArray) 会产生这样的字符串 Apple, Banana, Pear 但我希望它看起来像这样: Apple, Banana and Pear 是否有一种简单的方法可以使用Linq实现它而不使用循环?

是否可以使用GPU加速(动态)LINQ查询?

我一直在寻找有关使用GPU加速LINQ查询的可能性的可靠信息。 到目前为止我已经“调查过”的技术: Microsoft Accelerator Cudafy 梵 简而言之,甚至可以对GPU上的对象进行内存中过滤吗? 假设我们有一些对象的列表,我们希望过滤类似的东西: var result = myList.Where(x => x.SomeProperty == SomeValue); 关于这个的任何指针? 提前致谢! UPDATE 我会尝试更具体地说明我想要实现的目标:) 目标是,使用任何技术,能够以绝对最快的方式过滤对象列表(范围从~50 000到〜2 000 000)。 在完成过滤(sum,min,max等)时对数据执行的操作是使用内置的LINQ方法完成的,并且对于我们的应用程序已经足够快,所以这不是问题。 瓶颈是“简单地”过滤数据。 UPDATE 只是想补充一点,我已经测试了大约15个数据库,包括MySQL(检查可能的集群方法/ memcached解决方案),H2,HSQLDB,VelocityDB(目前正在进一步调查),SQLite,MongoDB等,而NONE就足够了过滤数据的速度(当然,NO-sql解决方案不提供像sql那样,但你得到的想法)和/或返回实际数据。 只是总结一下我/我们需要的东西: 一种数据库,能够在不到100毫秒的时间内对200列和大约250 000行的数据进行排序。 我目前有一个带有并行化LINQ的解决方案,它能够(在特定的机器上)在过滤和处理结果时每行只花费纳秒时间! 因此,我们需要在每一行上进行亚纳秒级过滤。 为什么只有内存LINQ能够提供这个? 为什么这不可能? 日志文件中的一些数字: Total tid för 1164 frågor: 2579 这是瑞典语并翻译: Total time for 1164 queries: 2579 这种情况下的查询是这样的查询: WHERE SomeProperty = SomeValue […]

Linq查询两个列表对象

我有两个对象: ObjectA { string code; string country; } ObjectB { string code; string otherstuff; } 我有List和List ,我需要在List objectA.Code List中找到包含objectA.Code所有对象。 但无法管理在LINQ查询上实现它。

计算两个列表中所有可能的项目对?

我有两个数组: string[] Group = { “A”, null, “B”, null, “C”, null }; string[] combination = { “C#”, “Java”, null, “C++”, null }; 我希望返回所有可能的组合,例如: { {“A”,”C#”} , {“A”,”Java”} , {“A”,”C++”},{“B”,”C#”},………… } 应该忽略null。

使用Linq选择列表内部列表

使用LINQ如何从List中的List中进行选择 public class Model { public string application { get; set; } public List users { get; set; } } public class Users { public string name { get; set; } public string surname { get; set; } } List list = new List(); 我需要选择application =“applicationame”的列表和surname =“surname”的用户到一个列表中。

使用foreach迭代IQueryable会导致内存不足exception

我正在使用foreach / IQueryable和LINQ-to-SQL迭代一个小的(~10GB)表。 看起来像这样: using (var conn = new DbEntities() { CommandTimeout = 600*100}) { var dtable = conn.DailyResults.Where(dr => dr.DailyTransactionTypeID == 1); foreach (var dailyResult in dtable) { //Math here, results stored in-memory, but this table is very small. //At the very least compared to stuff I already have in memory. 🙂 } } […]

LINQ比较两个列表并删除

我有两个清单。 我想从LIST1中删除LIST2中不存在的任何项目。 例如: var list1 = new List(); list1.Add(new DownloadTask{ OperationID = 1, MachineID = 1 }); list1.Add(new DownloadTask{ OperationID = 2, MachineID = 1 }); list1.Add(new DownloadTask{ OperationID = 3, MachineID = 1 }); list1.Add(new DownloadTask{ OperationID = 3, MachineID = 2 }); var list2 = new List(); list2.Add(new DownloadTask{ OperationID = 1, MachineID […]