Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何将IEnumerable结果转换为列表<;treenode>;_Asp.net Mvc_C# 4.0 - Fatal编程技术网

Asp.net mvc 如何将IEnumerable结果转换为列表<;treenode>;

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

如何在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 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();