2011-04-22 20 views

回答

1

嘗試:

string csv = string.Join(",", list.Select(p => p.Email).ToArray()); 
+0

這將工作,直到你遇到一個逗號的電子郵件地址。不要笑。電子郵件地址的語法不僅僅是「郵箱@域」風格的電子郵件地址。 – 2011-04-22 20:57:51

+0

@Nicholas,這將違反RFC是有一個逗號,沒有引用。所以,如果這只是一個電子郵件地址,而不是一個複合地址,包括顯示名稱,那麼它不會是一個問題。 – 2011-04-22 22:32:09

+0

根據RFC,這是一個有效的電子郵件地址'John Smith(Acme,Inc.)<[email protected]>'。同上「,史密斯,約翰」<[email protected]>'。雙引號可能會在錯誤的地方打破CSV解析器。合法的電子郵件地址不僅僅包含簡單的地址,如'mailbox @ domain'。 – 2011-04-22 22:45:40

0
List<Person> persons = new List<Person>(); 

persons.Add(new Person { FirstName = "saurabh", LastName = "sharma" }); 

persons.Add(new Person { FirstName = "sandeep", LastName = "singh" }); 

persons.Add(new Person { FirstName = "Ivan", LastName = "gupta" });      

Response.Write(string.Join(",", (from p in persons select p.FirstName).ToArray())); 
+0

如果列表中的任何人字段包含',',這是行不通的。 – 2011-04-22 20:04:02

+0

這是一個約束沒有名稱包含','或電子郵件字段','。如果它包含,那麼它會按照像sau​​rabh,sandee,p,Ivan這樣的值加入。所以道德是你的數據是腐敗的。因此,如果你知道你的約束,那麼要麼採取簡單的方法。在添加列表時,你可以刪除(等)字符。 – TechGiant 2011-04-22 20:09:54

1

使用LINQ to CSV非常容易。看看鏈接。

所有你需要做的就是發生在Person類中的一些屬性,你將能夠同時讀取/寫入從/輕鬆.csv文件:)

下面是一個例子:

var emails = 
    from p in people 
    select new { p.Email }; 

cc.Write(emails, @"C:\emails.csv", outputFileDescription) 

其中outputFileDescription之前聲明(看看例子)。

3

使用一些美味的LINQ:

string csv = string.Join(",", people.Select(p => p.Email)); 
+0

你有正確的想法,但語法錯誤。 – jason 2011-04-22 20:04:58

+0

謝謝,修正了語法。 – 2011-04-22 20:05:26

+0

'string.Join(delimiter,string [])',你有它們向後。你需要在你的Select()之後使用.ToArray(),因爲它期望一個字符串[]不是Enumerable 。 – 2011-04-22 20:08:01