在单个对象中排序数据而不是 IEnumerable
Order data in a single object without it being IEnumerable
我只有一个对象。对象中的字段之一是统计列表。我正在尝试按统计信息中的字段之一进行排序。所以我有一个服务器,服务器有一个名称,工人数和工人统计数据......工人统计数据有多个统计数据的列表,如 DA,服务器,客户端......我想按客户订购这些工人统计数据但仍然离开整个对象作为一个服务器。我正在尝试这样做。
SvcProxy.Server refreshedServer = SvcProxy.GetServer(serverName);
var tempServer = refreshedServer.WorkerStats.OrderBy(ws => ws.Client);
但是当我这样做时,tempServer 变成了 Ordered IEnumerable。当我想将其保留为 SvcProxy.Server 时,除了其中的统计数据,由客户订购。这可能吗?
如果我在法律上遇到麻烦,idk 那里有敏感数据,所以我将 post 尽我所能 class。 WorkerStats 是一个 IEnumerable。
public IEnumerable<WorkerStatsDisplay> WorkerStats
{
get {
if (String.IsNullOrEmpty(ServerName) || !Active)
{
return Enumerable.Empty<WorkerStatsDisplay>();
}
}
}
你可以做的是使用扩展方法:
public static class ServerExtensions
{
public static IEnumerable<WorkerStatsDisplay> GetSortedWorkerStats(this Server server)
{
return server.WorkerStats.OrderBy(ws => ws.Client);
}
}
然后像这样使用它:
SvcProxy.Server refreshedServer = SvcProxy.GetServer(serverName);
var ordered = refreshedServer.GetSortedWorkerStats();
确保将此人包装在与原始 class 相同的命名空间中。您不必这样做,但它是 SOP,并且由于使用 class(因为它将存在于同一名称空间中)来导入您的扩展方法,因此它变得更容易。
虽然它与您现在正在做的事情相同,但它使每个人都可以重复使用和使用它而无需修改原始 class。
我很快就把它搞定了。请检查代码的一致性。
祝你好运!
我只有一个对象。对象中的字段之一是统计列表。我正在尝试按统计信息中的字段之一进行排序。所以我有一个服务器,服务器有一个名称,工人数和工人统计数据......工人统计数据有多个统计数据的列表,如 DA,服务器,客户端......我想按客户订购这些工人统计数据但仍然离开整个对象作为一个服务器。我正在尝试这样做。
SvcProxy.Server refreshedServer = SvcProxy.GetServer(serverName);
var tempServer = refreshedServer.WorkerStats.OrderBy(ws => ws.Client);
但是当我这样做时,tempServer 变成了 Ordered IEnumerable。当我想将其保留为 SvcProxy.Server 时,除了其中的统计数据,由客户订购。这可能吗?
如果我在法律上遇到麻烦,idk 那里有敏感数据,所以我将 post 尽我所能 class。 WorkerStats 是一个 IEnumerable。
public IEnumerable<WorkerStatsDisplay> WorkerStats
{
get {
if (String.IsNullOrEmpty(ServerName) || !Active)
{
return Enumerable.Empty<WorkerStatsDisplay>();
}
}
}
你可以做的是使用扩展方法:
public static class ServerExtensions
{
public static IEnumerable<WorkerStatsDisplay> GetSortedWorkerStats(this Server server)
{
return server.WorkerStats.OrderBy(ws => ws.Client);
}
}
然后像这样使用它:
SvcProxy.Server refreshedServer = SvcProxy.GetServer(serverName);
var ordered = refreshedServer.GetSortedWorkerStats();
确保将此人包装在与原始 class 相同的命名空间中。您不必这样做,但它是 SOP,并且由于使用 class(因为它将存在于同一名称空间中)来导入您的扩展方法,因此它变得更容易。
虽然它与您现在正在做的事情相同,但它使每个人都可以重复使用和使用它而无需修改原始 class。
我很快就把它搞定了。请检查代码的一致性。
祝你好运!