如何使用 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 组合。不确定这是否只是一个拼写错误,或者您是否需要考虑这一点。