如何将投影结果复制到 c# 中的另一个变量中?



下面的代码无法运行,因为它抱怨我正在尝试将类型Anon添加到客户端类型中。在最初投影某些结果并丢失原始 Type 后,如何将某些结果存储在另一个变量中。

(附言。我使我的例子变得简单,但实际上正在处理更复杂的情况。在我的实际情况中,不投影不是一种选择。已编辑以提供澄清

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();

有两个选项。

第一。不要使用 anon 数据类型,而是使用Clients数据类型。实际上,您正在创建Clients对象 -

var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new Clients{
LastName = c.LastName.ToUpper(),
c.DateAdded,
c.FirstName,
})

第二。 创建一个object列表并为其分配任何自定义/匿名数据类型 -

var certainClients = new List<object> { };

最佳方法是投影到自定义业务实体类。 这意味着我们实际上自己定义了类。例如。

public class ClientEntity
{
public string LastName;
public DateTime DateAdded;
// etc for custom fields or properties you want
}

然后我们可以简单地投影到我们的定制类

var clients = Clients.Where(c => c.FirstName.StartsWith("Mark"))
.Select(c => new ClientEntity{
LastName = c.LastName.ToUpper(),
DateAdded = c.DateAdded,
etc
})

这样,它避免了List <object>不是类型安全的,并且不需要与原始客户端类相似,例如,如果我们想要原始名称的长度。

相关内容

  • 没有找到相关文章

最新更新