这是示例表和示例类
Name Parameter Value
A1 P1 X
A1 P2 Y
A2 P1 XX
A2 P2 YY
Class foo {
Int Name
Int Value1
Int Value2
}
那么,如何编写一个查询,该查询仅应检索将Parameter设置为P1或P2的行(该示例中没有显示Parameter的其他值)?同样,查询应使用(在此示例中)2个foo类实例(每个不同的Name值一个实例)创建foo对象的List。
生成的列表也应按Value1排序。
谢谢。
PV
答案 0 :(得分:0)
我尝试如下: 为输入数据创建了一个虚拟类:
public class Test
{
public string Name { get; set; }
public string Parameter { get; set; }
public string Value { get; set; }
}
在代码中,
var inputData = new List<Test>
{
new Test{Name ="A1", Parameter="P1", Value="X"},
new Test{Name ="A1", Parameter="P2", Value="Y"},
new Test{Name ="A2", Parameter="P1", Value="XX"},
new Test{Name ="A2", Parameter="P2", Value="YY"}
};
var groupedData = inputData.GroupBy(x => x.Parameter).ToList();
var result = new List<foo>();
foreach (var item in groupedData)
{
result.Add(new foo
{
Name = item.FirstOrDefault().Name,
Value1 = item.FirstOrDefault().Value,
Value2 = item.Skip(1).FirstOrDefault().Value
});
}
答案 1 :(得分:0)
public class Table
{
public string Name { get; set; }
public string Parameter { get; set; }
public string Value { get; set; }
}
public class foo
{
public string Name { get; set; }
public string Value1 { get; set; }
public string Value2 { get; set; }
}
var inputData = new List<Table>
{
new Table{Name ="A1", Parameter="P1", Value="X"},
new Table{Name ="A1", Parameter="P2", Value="Y"},
new Table{Name ="A1", Parameter="P3", Value="Z"},
new Table{Name ="A2", Parameter="P1", Value="XX"},
new Table{Name ="A2", Parameter="P2", Value="YY"},
new Table{Name ="A2", Parameter="P3", Value="ZZ"},
};
var groupedData = inputData.Where(y => y.Parameter == "P1" || y.Parameter == "P2" ).GroupBy(x => x.Name).ToList();
var result = new List<foo>();
foreach (var item in groupedData)
{
result.Add(new foo
{
Name = item.FirstOrDefault().Name,
Value1 = item.FirstOrDefault().Value,
Value2 = item.Skip(1).FirstOrDefault().Value
});
}
var result1 = result.OrderByDescending(x => x.Value1).ThenBy(x => x.Name);