我有这样的模型结构
[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多条记录)
答案 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查询来检索数据。