2016-01-21 60 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 : ""; 
相關問題