我有一个WPF应用程序,我想填充树视图。在此之前,我希望用户能够从下拉列表中选择集合中可用的任何字段/属性,然后使用数据填充树并进行适当分组。
示例对象
public class class_01{
public string Property_A {get; set;}
public string Property_B {get; set;}
public string Property_C {get; set;}
}
示例集合
List<class_01> list_01 = new List<class_01>();
同样,下拉列表将与列表中可用的属性绑定。这样,如果更改应用程序的列表不需要修改。这是我需要的答案的一个重要要求。
让我们说用户选择&#34; Property_A&#34;。
我想要一个看起来像这样的linq查询方法。
Linq查询
public groupingModel getGrouping(string groupBy) // groupby equals property A in this example
{
List<class_01> list = getList(); //Returns the list of data of type class_01
var q = from x in w where ????? == groupBy select x; // I dont want to specify a specific property but rather have one applied dynamically
return q;
}
我有一个自定义对象,然后将解析该查询。看起来类似于以下内容。
自定义对象
public class class_02{
public string header {get; set;} // will be set to the discrete values of the selected groupby property
public List<class_01> prop_a {get; set;}
}
然后将适当地绑定到树。
有什么想法?
修改
此外,我如何获得用户选择的属性的唯一值列表。
例如
{a = 1,b = 2,c = 3},{a = 2,b = 3,c = 4}
如果用户决定对财产进行分组&#34; a&#34;我们如何制作[1,2]的集合?
构造where子句需要这样做。
foreach(value of user selected property){
string whereClause = string.format("{0} = {1}",selected property, value")
}
编辑 - 从动态查询中捕获例外
public List<groupingModel> getGrouping(string groupBy)
{
List<groupingModel> lgm = new List<groupingModel>();
//Categories.Select(c => c.Id).ToList()
var w2 = getWVWellsList();
//var v = w2.Select(groupBy).Distinct().Cast<string>().ToArray();
var v = w2.Select(groupBy).Distinct();
foreach(string val in v)
{
string whereClause = string.Format("{0} = {1}", groupBy, val);
try
{
IEnumerable<WVWellModel> q2 = w2.Where(whereClause);
List<WVWellModel> l = q2.ToList<WVWellModel>();
lgm.Add(new groupingModel { Header = val, Wells = l });
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Query Error", MessageBoxButton.OK, MessageBoxImage.Error);
throw new Exception("Generic Exception - Issue With Group By Query", e);
}
}
return lgm;
}
异常 &#34;没有财产或领域&#34;科罗拉多&#34;存在于WVWellModel&#34;
类型中在这个例子的情况下,我可以确认我的where子句是&#34; State = Colorado&#34;。看起来查询正在应用值而不是属性状态,该属性是该类型的一部分。就好像在调用查询时它是相反的。
答案 0 :(得分:2)