【问题标题】:How to cast a type to specific class in c# 4.0 after querying LINQ to Object查询LINQ to Object后如何在c#4.0中将类型转换为特定类
【发布时间】:2015-01-05 12:49:05
【问题描述】:

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

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 =&gt; 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;
    }

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

谢谢

【问题讨论】:

  • 因为 Where 返回 IEnumerable,它可能有超过 1 个元素。更改单曲的第一个位置

标签: c# list


【解决方案1】:

使用.FirstOrDefault() 获取第一个匹配您的Where() 的元素,如果没有匹配则使用null

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

还通过示例代码讨论如何使用自动映射器解决上述场景。

您已经在各种问题下完成了此操作:“这是我的问题,哦,请用示例代码向我解释这个相关概念”

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

【讨论】:

  • 感谢您的回答,但您会展示如何使用自动映射器实现相同的目的。谢谢
  • 请再次阅读我回答的第二部分。而且你不需要自动映射器。
  • 为了简洁起见,可以简化为 var oCustomer = oCust.FirstOrDefault(x => x.CountryCode == "US");
【解决方案2】:

问题是Where 返回一个collection 条目,但你只想要一个(哪一个?)。你可以像这样解决这个问题

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多