[英]What are the advantages/disadvantages of assigning a name to one or more of the properties a LINQ anonymous type?
在下面的示例中,我已將名稱“CustomerType”分配給屬性 x.Preferred。
除了可能獲得可讀性之外,為屬性分配名稱是否有任何性能優勢/劣勢?
using System;
using System.Linq;
namespace ConsoleApp2
{
public class Customer
{
public string Name { get; set; }
public string ID { get; set; }
public string Preferred { get; set; }
// Constructor that takes one argument:
public Customer(string _name, string _iD, string _preferred)
{
Name = _name;
ID = _iD;
Preferred = _preferred;
}
static void Main(string[] args)
{
Customer[] cust = new Customer[]
{
new Customer ("Mike", "1234", "Preferred"),
new Customer ("Alice", "4321", "Preferred"),
new Customer ("Susan", "3214", "Not Preferred"),
new Customer ("David", "7538", "Preferred")
};
var customers = cust
.Where(x => x.Preferred == "Not Preferred")
.Select(x => new
{
x.Name,
x.ID,
CustomerType = x.Preferred // What are the advantages/disavantages of assigning the name "CustomerType" to this property?
});
foreach (var customer in customers)
{
Console.WriteLine($" Preferred Customer is {customer.Name}. Customer ID is {customer.ID}. Customer is {customer.CustomerType}.\n ");
}
}
}
}
來自匿名類型規范
如果未在匿名類型中指定成員名稱,編譯器將為匿名類型成員提供與用於初始化它們的屬性相同的名稱。 您必須為使用表達式初始化的屬性提供名稱
所以,這只是命名方便,在性能方面沒有任何意義。 您指定所需的名稱而不是原始屬性名稱。
在您的代碼中,這意味着您正在使用來自原始Customer
對象的Preferred
屬性的CustomerType
名稱。 如果你像這樣寫你的Select
表達式
x => new
{
x.Name,
x.ID,
x.Preferred
}
您只能通過Preferred
名稱訪問最后一個屬性。 但是你必須指定名稱,當匿名類型是表達式的結果時,例如
x => new
{
x.Name,
Count = x.Count() //will not compile without name
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.