C# 检查列表中数组的大小,并将数组中的每个实体显示为唯一的列表值

C# 检查列表中数组的大小,并将数组中的每个实体显示为唯一的列表值,c#,arrays,linq,list,C#,Arrays,Linq,List,我想知道是否有人可以帮助我,基本上我正在尝试使用linq来平展列表。列表中有一个电话号码数组,我不知道该怎么做,只需计算数组的大小,然后将每个电话号码添加为一个唯一的列表值 var FlatenedList = from x in result where x.ID != null orderby x.ID select new { AccountNumber = x.AccountNumber, Balance = x.Balance, BillToCompan

我想知道是否有人可以帮助我,基本上我正在尝试使用linq来平展列表。列表中有一个电话号码数组,我不知道该怎么做,只需计算数组的大小,然后将每个电话号码添加为一个唯一的列表值

var FlatenedList = from x in result
where x.ID != null
orderby x.ID

select new
   {
    AccountNumber = x.AccountNumber,
    Balance = x.Balance,
    BillToCompanyName = x.BillToContact.CompanyName,
    BillToName = x.BillToContact.Name,

    BillToPhoneNumber1 = x.BillToContact.PhoneNumbers[0].Number == null ? String.Empty : (x.BillToContact.PhoneNumbers[0].Number),
    BillToPhoneNumber2 = x.BillToContact.PhoneNumbers[1].Number == null ? String.Empty : (x.BillToContact.PhoneNumbers[1].Number),
    BillToPhoneNumber3 = x.BillToContact.PhoneNumbers[2].Number == null ? String.Empty : (x.BillToContact.PhoneNumbers[2].Number),       
    };

也许你应该试试下面这样的东西,我还没有编译过,但这可能有用

var FlatenedList = from x in result
where x.ID != null
orderby x.ID

select new
   {
    AccountNumber = x.AccountNumber,
    Balance = x.Balance,
    BillToCompanyName = x.BillToContact.CompanyName,
    BillToName = x.BillToContact.Name,

    BillToPhoneNumber = x.BillToContact.PhoneNumbers.ToList().Where(num=>num.Number !=null).Select(num=>num) 
    };
我想你需要一份工作

以下是如何为一个项目执行此操作:

var FlattenedItem = new ExpandoObject();

for(int i = 0; i < x.BillToContact.PhoneNumbers.length; i++) {
    // You will have to cast FlattenedItem to an IDictionary to add items
    ((IDictionary<string, object>)FlattenedItem).Add("BillToPhoneNumber" + i, x.BillToContact.PhoneNumbers[i]);
}

// This is your first phonenumber
var firstPhoneNumber = FlattenedItem.BillToPhoneNumber0;
var flatteeditem=newexpandoobject();
for(int i=0;i
查看此答案以了解更多信息:

如果我理解正确,这就是您需要的:-

var result = accounts.OrderBy(x => x.Id)
              .Select(x => new 
                {
                   AccountNumber = x.AccountNumber,
                   Balance = x.Balance,
                   BillToCompanyName = x.BillToContact.CompanyName,
                   BillToName = x.BillToContact.Name,
                   PhoneNumbersCount = x.BillToContact.PhoneNumbers.Count(),  
                                         //All phone numbers count including null
                   PhoneNumbersList = x.BillToContact.PhoneNumbers
                                       .Select(z => z.Number ?? String.Empty).ToList()
                });

您可以在我使用了一些示例数据的地方查看此信息,并让我知道这是否是您要查找的内容。

添加所有电话号码并获得唯一列表,如中所示?你能展示一些样本数据吗?你所拥有的有用。您的意思是希望此代码在您的匿名对象中生成属性,直到
BillToPhoneNumber99
如果
BillToContact.PhoneNumbers
包含100个条目为止?