Asp.net mvc 如何将IEnumerable结果转换为列表<;treenode>;
如何在C#、.NET4.0和MVC中获取Asp.net mvc 如何将IEnumerable结果转换为列表<;treenode>;,asp.net-mvc,c#-4.0,Asp.net Mvc,C# 4.0,如何在C#、.NET4.0和MVC中获取IEnumerable结果并将其转换为列表 我基本上在两个地方运行相同的查询,只想访问数据库一次。我在很多地方运行了两次这个查询 using (SqlConnection cn = new SqlConnection(DBUtils._connStr)) string sql = @"SELECT L.Name as Name, L.LocationTypeID as LocationTypeID, L.LocationID as LocationI
IEnumerable
结果并将其转换为列表
我基本上在两个地方运行相同的查询,只想访问数据库一次。我在很多地方运行了两次这个查询
using (SqlConnection cn = new SqlConnection(DBUtils._connStr))
string sql = @"SELECT L.Name as Name, L.LocationTypeID as LocationTypeID, L.LocationID as LocationID, L.ParentLocationID as ParentLocationID, ISNULL(L.OrderByNumber, -10000) as SectionOrder, L.FromAddress as FromAddress,
lojL.Name as Section, lojL.LocationID as SectionID,
ISNULL(lojL.Name + ' \ ','') + L.Name as NameWithSection
FROM hdLocations as L
LEFT OUTER JOIN hdLocations as lojL ON L.ParentLocationID = lojL.LocationID
WHERE L.LocationID > 0 AND L.InstanceID=0 And L.ParentLocationID =0";
sql += " ORDER BY L.OrderByNumber, L.Name";
IEnumerable<TicketLocation> locations = cn.Query<TicketLocation>(sql);
好的,要将
IEnumerable
转换为列表
,只需调用.ToList()
。就从TicketLocation
到TreeNode
的映射而言,您发布的代码有什么问题?您可以通过以下方式大大简化该代码:
var locs = locations.Where(m => m.ParentLocationID == 0 && m.LocationID > 0)
.Select(m => new TreeNode
{
id = m.LocationID,
data = m.Name,
parentId = m.ParentLocationID
}).ToList();
这将导致
LOC
成为列表
什么类型的“cn”?“cn.Query()”的返回类型是什么?是否要从IEnumerable
生成IEnumerable
?cn是SQLConnection…@ClaudioRedi类似的,是的。请参阅我的编辑。我还提到,您还需要有using子句using System.Linq代码>如果你还没有.Chris的using子句,我就是找不到这个。完美的我对构建TreeNode的代码有点挂念,它有第四个值。Erik,最好像你一样提到“使用”,因为很难找到它!很多人忽略了这一点,也。。。
foreach (TicketLocation TL in locations)
{
if ((TL.ParentLocationID == 0) && (TL.LocationID > 0))
{
TreeNode itemTreeNode = new TreeNode()
{
id = TL.LocationID,
data = TL.Name,
};
itemTreeNode.id = TL.LocationID;
itemTreeNode.data = TL.Name;
itemTreeNode.parentId = TL.ParentLocationID;
// itemTreeNode.
locs.Add(itemTreeNode);
}
}
var locs = locations.Where(m => m.ParentLocationID == 0 && m.LocationID > 0)
.Select(m => new TreeNode
{
id = m.LocationID,
data = m.Name,
parentId = m.ParentLocationID
}).ToList();