gpt4 book ai didi

c# - 这是为 POCO 实现 ObjectDataSource 排序的方式吗?

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:53 24 4
gpt4 key购买 nike

当我不得不做这么多工作时,有时我会觉得自己忽略了什么。

这段代码成功地对一列进行了排序。必须手动构建 switch 语句以获取额外信息。

我是否忽略了执行此操作的“实际/简单”方法?

注意:msdn docs 中似乎有注释说这根本不可能,除非我读错了(但它确实有效,只是这样很痛苦)。

其他注意事项:我在这里使用术语 DAC 和 POCO 并不是完全有信心,所以请纠正我是否可以更好。

ObjectDataSource + GridView:

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" AllowSorting="True">
<Columns>
<asp:BoundField DataField="AppID" HeaderText="AppID" SortExpression="AppID" />
<asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
<asp:BoundField DataField="Timestamp" HeaderText="Timestamp" SortExpression="Timestamp" />
DataField="Credit" HeaderText="Credit" SortExpression="Credit" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetLeads" TypeName="Leads.LeadsContainer" SortParameterName="sortParameter">
</asp:ObjectDataSource>

来自 DAC 的片段:

    public List<ILead> GetLeads(string sortParameter)
{
List<ILead> leads = new List<ILead>();
int numLeads = 10;
Random random = new Random();
while (leads.Count < numLeads)
{
leads.Add(Lead.CreateRandom(random));
}
string[] sortExpressions = sortParameter.Split(',');
if (sortExpressions.Length > 0)
{
string sortExpression = sortExpressions[0];
string[] sortInfos = sortExpression.Split(' ');
string sortField = sortInfos[0];
string sortDirection = (sortInfos.Length == 1 ? "ASC" : "DESC");
switch (sortField)
{
case "Timestamp":
switch (sortDirection)
{
case "ASC":
leads = leads.OrderBy(c => c.Timestamp).ToList();
break;
case "DESC":
leads = leads.OrderByDescending(c => c.Timestamp).ToList();
break;
default:
break;
}
break;
default:
break;
}
}
return leads;
}

POCO(接口(interface)):

public interface ILead
{
string AppID { get; set; }
string Type { get; set; }
DateTime Timestamp { get; set; }
string CDNumber { get; set; }
string IP { get; set; }
string ESourceID { get; set; }
string State { get; set; }
DateTime DateOfBirth { get; set; }
string Email { get; set; }
bool IsVetran { get; set; }
string Credit { get; set; }
}

最佳答案

使用 Dynamic linq library .这可以使 linq 查询以字符串作为参数,但是必须准备字符串。

字符串可以用于任何事情,根据条件过滤,排序,在一个值和另一个值之间。

关于c# - 这是为 POCO 实现 ObjectDataSource 排序的方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9424971/

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