2016-01-21 74 views
-1

我有一个linq表达式,我正在使用它来返回CSV文件中的字符串列表。问题是它返回System.Collections.Generic.List'1[System.String]哪里应该有每个人的数据。system.collection.generic.list system.string获取返回而不是实际数据

这是

foreach (Person person in persons) 
      { 
       var finalValue = person.PersonDatas.Where(x => x.FinalValue != null).ToString(); 

       sb.AppendLine(string.Format("\"{0}\",\"{1}\",\"{2}\"", 
        person.ClientInternalPerson_ID, 
        person.FirstName + " " + person.LastName, 
        finalValue 
              )); 
      } 

我也试过

var finalValue = person.PersonDatas.Where(x => x.FinalValue != null).ToString(); 

但所有的返回信息

System.Linq.Enumerable+WhereListIterator'1[Project.Core.Models.PersonData]

+0

请张贴的[MCVE] –

回答

1

您不能在查询调用.ToString因为它返回一个记录集(实际上是IEnumerable<PersonData>),而不是一个单一的值。然后,您需要像这样遍历它们:

foreach (Person person in persons) 
{ 
    var finalValues = person.PersonDatas.Where(x => x.FinalValue != null); 
    foreach(var finalValue in finalValues) 
    { 
    sb.AppendLine(string.Format("\"{0}\",\"{1}\",\"{2}\"", 
     person.ClientInternalPerson_ID, 
     person.FirstName + " " + person.LastName, 
     finalValue)); 
    } 
} 

您可以使用SelectMany进一步扁平化,但这是一个不同的问题。如果你期待有且只有1个每个人的记录,其中最终值= null,则您可以通过使用.First.Single像这样简化它!

foreach (Person person in persons) 
{ 
    var finalValue = person.PersonDatas.First(x => x.FinalValue != null); 

    sb.AppendLine(string.Format("\"{0}\",\"{1}\",\"{2}\"", 
    person.ClientInternalPerson_ID, 
    person.FirstName + " " + person.LastName, 
    finalValue)); 
} 
0

下面的命令返回一个枚举列表PF PersonData对象的表达式有非空FinalValues:

var finalValue = person.PersonDatas.Where(x => x.FinalValue != null); 

您需要从列表中获取特定的PersonData对象。例如,下面的代码会给你带有非空FinalValue的第一个PersonData对象的FinalValue。

var finalValue = person.PersonDatas.Where(x => x.FinalValue != null).First().FinalValue.ToString(); 

注 - 如果没有匹配,上述代码将引发异常。如果你没有这方面的一个保证,你可以这样做:

var finalValuePerson = person.PersonDatas.Where(x => x.FinalValue != null).FirstOrDefault(); 
var finalValue = (finalValuePerson != null) ? finalValuePerson.FinalValue : ""; 
相关问题