【问题标题】:Why do I keep getting an error on converting a generic list to the same list type?为什么我在将通用列表转换为相同的列表类型时不断收到错误消息?
【发布时间】:2017-09-29 13:39:45
【问题描述】:

我遇到了这个错误

无法从“System.Collections.Generic.List”转换为“HWC.DataAccess.FAREmailList”HWC.DataAccess

我不理解这个错误,因为它是相同的列表类型

这是我正在使用的方法

public void PrepareToSendEmailFromFAR(int id)
{
    HWC = new HWCEntities();

    FileAReport far = HWC.FileAReports.Where(w => w.FileAReportID == id).FirstOrDefault();

    List<FAREmailList> emailList = null;



    if(far.DistrictID != 0)
    {
        emailList = new List<FAREmailList>();
        var query = from dcx in HWC.DistrictContactXREFs
                    where
                      dcx.DistrictID == far.DistrictID
                    select new
                    {
                        dcx.ContactID,
                        dcx.Contact.ContactEmail,
                        dcx.Contact.ContactName
                    };

        foreach(var a in query)
        {
            emailList.Add(new FAREmailList
            {
                ContactName = a.ContactName,
                EmailAddress = a.ContactEmail
            });
        }

        SendEmailFromFAR(emailList);
    }

    if(far.DistrictID == 0)
    {
        emailList = new List<FAREmailList>();
        var query = from dcx in HWC.DistrictContactXREFs
                    join d in HWC.Districts on dcx.DistrictID equals d.DistrictID into d_join
                    from d in d_join.DefaultIfEmpty()
                    join sp in HWC.StateProvinces on new { StateProvinceID = d.StateID } equals new { StateProvinceID = sp.StateProvinceID }
                    where
                      d.StateID == far.StateCountyID
                    select new
                    {
                        dcx.ContactID,
                        dcx.Contact.ContactEmail,
                        dcx.Contact.ContactName
                    };

        foreach (var a in query)
        {
            emailList.Add(new FAREmailList
            {
                ContactName = a.ContactName,
                EmailAddress = a.ContactEmail
            });
        }
        SendEmailFromFAR(emailList);
    }
}

这是接收 emailList 的方法

public void SendEmailFromFAR(FAREmailList el)
{

}

数据类是

public class FAREmailList
{
    public string ContactName { get; set; }
    public string EmailAddress { get; set; }
}

错误被抛出

SendEmailFromFAR(emailList);

我没有看到问题是什么,是因为这些都在同一个类文件中吗?

【问题讨论】:

  • FAREmailList 不继承自 List。我很确定您打算改用SendEmailFromFAR(List&lt;FAREmailList&gt; el)。也可能不要命名明显不是列表的东西FAREmailList
  • 您的方法需要FAREmailList 的单个实例,但您提供了List&lt;FAREmailList &gt;
  • FAREmailList 应该命名为FAREmail。这令人困惑。
  • 投票结束是一个简单的错字。
  • 您可以在一个语句中创建列表。您根本不需要匿名类型。 emailList = (from ... select new FAREmail { dcx.Contact.ContactEmail, dcx.Contact.ContactName }).ToList()

标签: c# generic-list


【解决方案1】:

这个错误对我来说很有意义。 emailListList&lt;FAREmailList&gt; 类型,SendEmailFromFAR 接受 FAREmailList 作为输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 2020-07-11
    • 1970-01-01
    • 2017-01-17
    • 2016-01-05
    • 2016-04-15
    • 2010-09-10
    • 2013-03-24
    相关资源
    最近更新 更多