如何将预测结果复制到 C# 中的另一个变量?
How do I copy projected results into another variable in c#?
下面的代码不会 运行,因为它抱怨我正在尝试将 Anon 类型添加到客户端类型中。在最初投影某些结果并丢失原始类型后,如何将它们存储在另一个变量中。
(PS。我已经让我的示例变得简单,但实际上我正在处理一个更复杂的案例。在我的实际案例中,不投影不是一个选项。编辑以提供澄清.)
var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new {
LastName = c.LastName.ToUpper(),
c.DateAdded,
c.FirstName,
})
.ToList();
var certainClients = new List<Clients> { };
foreach (var client in clients)
{
if(client.DateAdded.Date < DateTime.Today) {
certainClients.Add(client);
}
}
certainClients.Dump();
有两种选择。
首先。不使用匿名数据类型,而是使用 Clients
数据类型。实际上,您正在创建 Clients
对象 -
var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new Clients{
LastName = c.LastName.ToUpper(),
c.DateAdded,
c.FirstName,
})
第二。创建 object
的列表并为其分配任何 custom/anon 数据类型 -
var certainClients = new List<object> { };
最好的方法是投影到自定义业务实体 class。
这意味着我们实际上定义了 class 自己。例如。
public class ClientEntity
{
public string LastName;
public DateTime DateAdded;
// etc for custom fields or properties you want
}
然后我们可以简单地投影到我们定制的 class
var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new ClientEntity{
LastName = c.LastName.ToUpper(),
DateAdded = c.DateAdded,
etc
})
这样可以避免 List <object>
类型不安全并且不需要与原始客户端相似 class 例如,如果我们想要原始名称的长度。
下面的代码不会 运行,因为它抱怨我正在尝试将 Anon 类型添加到客户端类型中。在最初投影某些结果并丢失原始类型后,如何将它们存储在另一个变量中。
(PS。我已经让我的示例变得简单,但实际上我正在处理一个更复杂的案例。在我的实际案例中,不投影不是一个选项。编辑以提供澄清.)
var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new {
LastName = c.LastName.ToUpper(),
c.DateAdded,
c.FirstName,
})
.ToList();
var certainClients = new List<Clients> { };
foreach (var client in clients)
{
if(client.DateAdded.Date < DateTime.Today) {
certainClients.Add(client);
}
}
certainClients.Dump();
有两种选择。
首先。不使用匿名数据类型,而是使用 Clients
数据类型。实际上,您正在创建 Clients
对象 -
var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new Clients{
LastName = c.LastName.ToUpper(),
c.DateAdded,
c.FirstName,
})
第二。创建 object
的列表并为其分配任何 custom/anon 数据类型 -
var certainClients = new List<object> { };
最好的方法是投影到自定义业务实体 class。 这意味着我们实际上定义了 class 自己。例如。
public class ClientEntity
{
public string LastName;
public DateTime DateAdded;
// etc for custom fields or properties you want
}
然后我们可以简单地投影到我们定制的 class
var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new ClientEntity{
LastName = c.LastName.ToUpper(),
DateAdded = c.DateAdded,
etc
})
这样可以避免 List <object>
类型不安全并且不需要与原始客户端相似 class 例如,如果我们想要原始名称的长度。