c# - 序列包含多个元素

标签 c# .net asp.net linq

我在通过 Linq 获取“RhsTruck”类型的列表并显示它们时遇到了一些问题。

RhsTruck 仅具有 Make、Model、Serial 等属性... RhsCustomer 具有 CustomerName、CustomerAddress 等属性...

我不断收到错误“序列包含多个元素”(类型为 InvalidOperationException)。有任何想法吗?我是不是以错误的方式处理这个问题?

public RhsCustomer GetCustomer(string customerNumber)
{
    using (RhsEbsDataContext context = new RhsEbsDataContext() )
    {
        RhsCustomer rc = (from x in context.custmasts
                          where x.kcustnum == customerNumber
                          select new RhsCustomer()
                        {
                            CustomerName = x.custname,
                            CustomerAddress = x.custadd + ", " + x.custcity
                            CustomerPhone = x.custphone,
                            CustomerFax = x.custfax
                        }).SingleOrDefault();
        return rc;
    }
}

public List<RhsTruck> GetEquipmentOwned(RhsCustomer cust)
{
    using (RhsEbsDataContext context = new RhsEbsDataContext())
    {
        var trucks = (from m in context.mkpops
                      join c in context.custmasts
                        on m.kcustnum equals c.kcustnum
                      where m.kcustnum == cust.CustomerNumber
                      select new RhsTruck
                    {
                        Make = m.kmfg,
                        Model = m.kmodel,
                        Serial = m.kserialnum,
                        EquipID = m.kserialno1,
                        IsRental = false
                    }).ToList();
        return trucks;
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    string testCustNum = Page.Request.QueryString["custnum"].ToString();
    
    RhsCustomerRepository rcrep = new RhsCustomerRepository();
    RhsCustomer rc = rcrep.GetCustomer(testCustNum);
    List<RhsTruck> trucks = rcrep.GetEquipmentOwned(rc);
    
    // I want to display the List into a Gridview w/auto-generated columns
    GridViewTrucks.DataSource = trucks;
    GridViewTrucks.DataBind();   
}

最佳答案

问题是您正在使用 SingleOrDefault .只有当集合恰好包含 0 或 1 个元素时,此方法才会成功。我相信你正在寻找FirstOrDefault无论集合中有多少元素,它都会成功。

关于c# - 序列包含多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256757/

相关文章:

javascript - 如何使用 webpack 包含整个 polyfill 文件夹?

c# - 如何根据条件更改 DataGridview 中的列前景色?

c# - 为什么我会收到 OleDBException "No value given for one or more required parameters?"

c# - 检查现有项目不起作用

c# - 使用 Telerik RadGrid 如何从客户端隐藏 GridHyperLinkColumn?

c# - 是否可以删除数据表单元格的第一个元素,即字符串值?

c# - 具有 protected 属性 setter 的对象 XmlSerialization

c# - 在外部 Javascript 文件中进行内联 C# 调用

.net - Console.WriteLine 会阻塞吗?

c# - GridView ASP .NET 中标题文本的垂直显示