2014-09-10 61 views
0

我正在为一个扁平表创建一个树视图。我有一个LINQ查询从列创建带有可变列名的LINQ语句

 public ActionResult Index() 
    { 
     var result = (from i in db.Items 
        select i.GeoName) 
        .Distinct() 
        .OrderBy(n => n); 

     return View(result); 
    } 

这当然会返回一个视图,我开始节点返回所有不同的值(假设让说“节点1”,“节点2”和“节点3”)。

我想然后让用户点击一个节点,并返回该列的内容。

你如何动态地做到这一点?

我希望它是简单(并且很可能是,我不知道 - LINQ福利局!)为:

 public ActionResult Index() 
    { 
     var result = (from i in db.Items 
        select i.passedInColumnName) 
        .Distinct() 
        .OrderBy(n => n); 

     return View(result); 
    } 

和往常一样,在此先感谢您有所帮助乡亲。

+1

直视动态LINQ – 2014-09-10 14:32:10

+0

当然,你总是希望返回相同的列(即'select'),但要限制返回的范围(即应用'where'条款)? – DavidG 2014-09-10 14:36:47

+0

更简单的方法可能是在初始视图中加载所需的所有列,并根据节点点击显示或隐藏列,而不是每次调用索引 – theDarse 2014-09-10 14:46:19

回答

1

你可以使用Expression Trees来做到这一点,但它的深度,我建议使用SQL作为Linq并不是真正的最佳解决方案。

这样做的SQL是:

SELECT DISTINCT 
    passedInColumnName 
FROM 
    Items 
WHERE 
    GeoName = 'the geo name' 
ORDER BY 
    passedInColumnName