gpt4 book ai didi

c# - LINQ - VB.Net 中的动态 OrderBy

转载 作者:行者123 更新时间:2023-11-30 21:24:57 25 4
gpt4 key购买 nike

我正在尝试做一些类似于从 Phil Haack 到 VB 的示例代码的事情,而 LINQ Orderby 给我带来了问题 - 我无法弄清楚如何做到这一点。完整的方法已发布。

这是 C# 版本:

    public ActionResult DynamicGridData(string sidx, string sord, int page, int rows)
{
var context = new HaackOverflowDataContext();
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = context.Questions.Count();
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

var questions = context.Questions.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize);

var jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (
from question in questions
select new
{
i = question.Id,
cell = new string[] { question.Id.ToString(), question.Votes.ToString(), question.Title }
}).ToArray()
};
return Json(jsonData);
}

我的问题是这一行...:

var questions = context.Questions.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize);

在 VB.Net 中,OrderBy 不接受字符串作为值 - 它似乎在 C# 中这样做(或者我遗漏了一些东西)。

(请注意 VAR 的使用不是这里的问题,我已经涵盖了。:))

编辑:这是我得到的错误(我根本无法编译):

重载解析失败,因为无法使用这些参数调用可访问的“OrderBy”...

完整错误消息的屏幕截图:alt text

编辑2:

根据要求提供更多信息。sidx 包含要排序的列的名称sord 包含 asc 或 desc

VB 代码:

Function MemberData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As JsonResult

Dim allRecords As IQueryable(Of Models.Member) = Me.MemberRepository.FindAllMembers
Dim currentPageRecords As IQueryable(Of Models.Member)
Dim pageIndex As Integer = page - 1
Dim pageSize As Integer = rows
Dim totalRecords As Integer = allRecords.Count
Dim totalPages As Integer = CInt(Math.Ceiling(totalRecords / pageSize))

Dim orderBy As String = sidx + " " + sord

currentPageRecords = allRecords.OrderBy(Function(m) orderBy).Skip(pageIndex * pageSize).Take(pageSize)

Dim jsonData = New With { _
.total = totalPages, _
.page = page, _
.records = totalRecords, _
.rows = New ArrayList _
}

For Each member As Models.Member In currentPageRecords
jsonData.rows.Add(New With {.id = member.MemberId, .cell = GenerateCellData(member)})
Next

Return Json(jsonData)

End Function

最佳答案

他有没有可能使用Dynamic Linq?使用动态 linq,您可以将字符串传递给 OrderBy 方法以及许多其他 IEnumerable 扩展方法。

关于c# - LINQ - VB.Net 中的动态 OrderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com