如何使用 LINQ 用 List<int> 和 String 填充对象?
How to use LINQ to populate a object with a List<int> and a String?
我正在使用 Entity Framework 6.3 和 LINQ 从 table 查询并填充下面的 DTO 对象:
public class MyObject
{
public string Name { get; set; }
public List<int> Number { get; set; }
public MyClass()
{
Number = new List<int>();
}
}
在这个特定的 table(遗留项目)中,Name 可以有多个 Numbers,因此我需要使用它作为一个列表。
table 看起来像这样:
Name Number
abc 15371
abc 15079
abc 15371
abc 30392
xyz 30373
xyz 13141
目前我的代码如下:
List<MyObjetct> myObject = new List<MyObjetct>();
myObject = contex.TableName.Where(x => listOfNames.Contains(x.Name))
.Select( y => new MyObject()
{
name = y.name
number = *populate the list of numbers*
});
我希望用名称和数字列表填充 MyObjects 列表。
试试这个:
myObject = contex.TableName.GroupBy(t => t.Name)
.Where(g => listOfNames.Contains(g.Key))
.Select(g => new MyObject()
{
name = g.Key,
number = g.Select(n => n.Number).ToList()
}).ToList();
输出:
Name / Numbers
abc / 15371,15079,15371,30392
xyz / 30373,13141
我注意到您的数据样本有重复的 name/number 组合。不确定这是否只是一个拼写错误,或者您是否需要考虑这一点。
我正在使用 Entity Framework 6.3 和 LINQ 从 table 查询并填充下面的 DTO 对象:
public class MyObject
{
public string Name { get; set; }
public List<int> Number { get; set; }
public MyClass()
{
Number = new List<int>();
}
}
在这个特定的 table(遗留项目)中,Name 可以有多个 Numbers,因此我需要使用它作为一个列表。
table 看起来像这样:
Name Number
abc 15371
abc 15079
abc 15371
abc 30392
xyz 30373
xyz 13141
目前我的代码如下:
List<MyObjetct> myObject = new List<MyObjetct>();
myObject = contex.TableName.Where(x => listOfNames.Contains(x.Name))
.Select( y => new MyObject()
{
name = y.name
number = *populate the list of numbers*
});
我希望用名称和数字列表填充 MyObjects 列表。
试试这个:
myObject = contex.TableName.GroupBy(t => t.Name)
.Where(g => listOfNames.Contains(g.Key))
.Select(g => new MyObject()
{
name = g.Key,
number = g.Select(n => n.Number).ToList()
}).ToList();
输出:
Name / Numbers
abc / 15371,15079,15371,30392
xyz / 30373,13141
我注意到您的数据样本有重复的 name/number 组合。不确定这是否只是一个拼写错误,或者您是否需要考虑这一点。