从LINQ查询构建自定义模型

时间:2017-07-10 07:23:25

标签: c# asp.net-mvc linq

我有这样的模型结构

[XmlRoot(ElementName = "ADDRESS")]
public class ADDRESS
{
    [XmlAttribute(AttributeName = "TO")]
    public string TO { get; set; }
}

[XmlRoot(ElementName = "SMS")]
public class SMSBODY
{
    [XmlElement(ElementName = "ADDRESS")]
    public List<ADDRESS> ADDRESS { get; set; }
    [XmlAttribute(AttributeName = "TEXT")]
    public string TEXT { get; set; }
}

我想从linq查询中构造一个List<SMSBODY>,现在我正在做一个foreach,如下所示:

List<studentsmsscheduler> smslist = (from n in dbContext.studentsmsschedulers
                                     select n).ToList();

List<SMSBODY> sms_body = new List<SMSBODY>();

foreach (studentsmsscheduler s in smslist)
{
    List<ADDRESS> api_smsto = new List<ADDRESS>();
    string _mob = s.MobileNo;
    api_smsto.Add(new ADDRESS {TO = _mob});

    string _message = s.Content;

    SMSBODY api_smsbody = new SMSBODY { TEXT = _message, ADDRESS = api_smsto };
    sms_body.Add(api_smsbody);
}

有没有办法以更快的方式从LINQ查询本身获取此列表? (因为每次可能有2000多条记录)

1 个答案:

答案 0 :(得分:0)

尝试以下

var sms_body = 
   dbContext
    .studentsmsschedulers
    .Select(it => new SMSBODY {
             TEXT  = it.Content, 
             ADDRESS = new List<ADDRESS>(){ 
                 new ADDRESS { TO = it.MobileNo } } 
    })
    .ToList();

上面的方法不会给你带来显着的改进,它只是你查询的简化版本+加载到内存中的数据较少。为了提高性能,请考虑使用纯SQL查询来检索数据。