Tag: sql order by

LINQ:如何在linq中动态使用ORDER BY,但仅限于变量不是string.empty或null

我正在使用LINQ2SQL,它的工作非常好。 但是,根据C#中变量类型字符串的值,我需要在查询中使用“Order By”或不使用“order by”。 如果C#字符串不为null或为空,那么我想对字符串变量的内容进行“排序依据”。 如果C#字符串为空或为null,那么我不包含顺序。 是否可以编写这种查询?

需要使用DateTime转换的lambda表达式OrderBy

我正在尝试创建一个lambda表达式(Linq,C#3.5),它可以对数据类型为String但实际上包含可解析的DateTime的值执行OrderBy。 例如,典型值可能是“5/12/2009”,“1/14/2008”等。 下面的OrderBy子句可以正确地进行排序(就像字符串数据一样),但实际上我想将这些值视为DateTimes,并按日期执行排序。 (sortColumn类似于“dateCreated”。) List orderedList = unorderedList.OrderBy(p => p.Details.Find(s => s.Name == sortColumn).Value).ToList(); 有没有办法转换谓词中的值来执行此操作? 任何帮助赞赏!

在LINQ OrderBy中使用或First()

如果我有这样的结构 相册 – 专辑 – 光盘 – 曲目 我想按照第一张唱片上第一首曲目的标题订购一系列专辑。 是否有类似于以下我可以做的事情(请记住我需要使用接受字符串的OrderBy扩展方法)? albums.OrderBy(“Discs[0].Tracks[0].Title”) 我需要能够使用字符串表达式进行排序,因此需要使用OrderBy方法,即albums.OrderBy(“Track [0] .Title”)。 原因是我们的自定义框架使用从GridView传回的排序表达式(例如“Title”),该表达式在字典中查找(例如“Track [0] .Title”)以获得正确的order by子句。 也就是说,排序的字段和方向是在运行时动态确定的。 要么 albums.OrderBy(“Discs.First().Tracks.First().Title”)

在ORDER BY子句中阻止SQL注入

在我们的数据库访问层中,我们有一些动态查询创建。 例如,我们有以下方法来构建ORDER BY子句的一部分: protected string BuildSortString(string sortColumn, string sortDirection, string defaultColumn) { if (String.IsNullOrEmpty(sortColumn)) { return defaultColumn; } return String.Format(“{0} {1}”, sortColumn, sortDirection); } 问题是, sortColumn和sortDirection都来自外部作为字符串,所以当然应该采取措施来防止可能的注入攻击。 有没有人知道如何做到这一点?

确定是否已订购IQueryable

有没有办法知道是否已经订购了IQueryable (使用OrderBy或OrderbyDescending )? 所以我知道是否在集合上调用OrderBy或ThenBy 。 IQueryable contacts = Database.GetContacts(); 我试过contacts is IOrderedQueryable ,但它总是如此。 编辑 :我刚刚改变了我的例子,前一个并没有真正表明我的观点。 假设GetContacts使用Entity Framework并简单地返回表的所有记录。 稍后,我将几个函数应用于contacts ,我不知道这些函数的作用。 他们可以对IQueryable进行排序或过滤。 当我收回集合时,我需要再次对它进行排序。 为此,我需要知道是否需要调用OrderBy或ThenBy 。 因此,如果已经对整个集合进行了排序,我不会重新排序。

具有动态Order By的LINQ查询

我有一个查询,我需要根据查询字符串参数进行ordeby。例如,如果sortby参数是price,Query需要随价格变化。 如果其评级比更改查询按评级排序。 我知道PredicateBuilder可以做And和OR的东西,但我如何进行动态ordeby linq查询。

传递选择器函数时,OrderBy不会转换为SQL

当我执行: var t = db.Table1.OrderBy(x => x.Name).ToList(); 在SQL事件探查器中,这是已翻译的SQL: SELECT [Extent1].[ID] AS [ID], [Extent1].[Name] AS [Name] FROM [dbo].[Table1] AS [Extent1] ORDER BY [Extent1].[Name] ASC 哪个是对的。 但是,如果我将选择器函数传递给OrderBy: Func f = x => x.Name; var t = db.Table1.OrderBy(f).ToList(); 翻译的SQL是: SELECT [Extent1].[ID] AS [ID], [Extent1].[Name] AS [Name] FROM [dbo].[Table1] AS [Extent1] orderby完全没有翻译。 有什么问题? 它们是相同的lambda函数,唯一的区别在于第二种情况,它首先被赋值给一个变量。

如何排序entity framework返回的内部列表?

如何对entity framework返回的对象的内部集合进行排序? public class X { public string Field {get; set;} public EntityCollection Ys {get; set;} } public class Y { public string Field {get; set;} } from x in entities.Xs orderby x.Field select x 有没有办法修改这个LINQ查询以返回X对象,还有Y对象排序? 或者我必须在它返回时手动对Y列表进行排序? 编辑: 此代码必须返回X类型对象的集合,匿名键入不符合当前项目的要求。

使用SUM和ORDER BY进行Linq查询

我有一个名为Hit的(C#)类,带有ItemID(int)和Score(int)属性。 我跳过其余的细节来保持简短。 现在在我的代码中,我有一个巨大的List,我需要做以下select(进入一个新的List):我需要获得每个Hit.ItemID的所有Hit.Score的总和,按Score排序。 所以,如果我在原始列表中有以下项目 ItemID=3, Score=5 ItemID=1, Score=5 ItemID=2, Score=5 ItemID=3, Score=1 ItemID=1, Score=8 ItemID=2, Score=10 结果列表应包含以下内容: ItemID=2, Score=15 ItemID=1, Score=13 ItemID=3, Score=6 有人可以帮忙吗?

OrderBy和OrderByDescending稳定吗?

我目前正在阅读Pro LINQ c#2008,而在第87页,那个人说OrderBy和OrderByDescending是稳定的。 但他在第96页中恰恰相反。它在我看来,因为他指的是完全相同的function,所以我不明白。 它们是否稳定?