查询 LINQ to Object 后如何在 c# 4.0 中将类型转换为特定的 class

How to cast a type to specific class in c# 4.0 after querying LINQ to Object

我有一个客户列表,稍后我查询该客户列表以根据国家代码提取一个客户数据。如何轻松完成这项任务。这是我的代码片段

public class Customer
{
        public string Name
        { get; set; }

        public double Salary
        { get; set; }

        public string CountryCode
        { get; set; }
}

private void button1_Click(object sender, EventArgs e)
{
            List<Customer> oCust = new List<Customer>();
            oCust.Add(new Customer { Name = "Tridip", Salary = 200, CountryCode = "GB" });
            oCust.Add(new Customer { Name = "Ari", Salary = 200, CountryCode = "US" });
            oCust.Add(new Customer { Name = "Dib", Salary = 200, CountryCode = "CA" });

            Customer oCustomer = oCust.Where(x => x.CountryCode == "US");
}

此行出错 Customer oCustomer = oCust.Where(x => x.CountryCode == "US");

我可以按照下面的方法来解决它

    var oCustomer = oCust.Where(x => x.CountryCode == "US");

    foreach (var item in oCustomer)
    {
        Customer _Cust = new Customer();
        _Cust.Name = item.Name;
        _Cust.Salary = item.Salary;
        _Cust.CountryCode = item.CountryCode;
    }

但我想知道在查询列表后是否还有其他方法可以获取一个客户数据。 请用示例代码告诉我。还讨论了如何使用示例代码使用自动映射器解决上述情况。

谢谢

使用 .FirstOrDefault() 获取与您的 Where() 匹配的第一个元素,或者 null 当 none 匹配时:

var oCustomer = oCust.Where(x => x.CountryCode == "US").FirstOrDefault();

also discuss how to solve the above scenario using auto mapper with sample code.

您已经根据各种问题完成了此操作:"Here is my question, oh and please explain this related concept to me with sample code".

这不是 Stack Overflow 的工作方式。在网上搜索 automapper,找到他们的 Getting Started page 如果您不知道如何使用它,请提出一个新问题。

问题是 Where returns 集合 个条目,但您只需要 一个 (哪一个?)。你可以这样解决这个问题

Customer oCustomer = oCust.Where(x => x.CountryCode == "US").FirstOrDefault();

但这并不代表选择了哪一个。它只选择它找到的第一个或 returns null.

你真的应该引入一种方法来唯一标识客户或对集合进行操作,因为可能有不止一次来自美国的客户