我有一個Person實體類似的東西LINQ到實體 - 得到所有相關實體領域到一個字符串
PersonId
PersonName
PersonPhone
我有房子實體
HouseID
HouseType
HouseSize
兩個實體與多對多的關係關係。 我需要將一個人(其中有許多房屋)的所有HouseType放入一個字符串中。
我有一個Person實體類似的東西LINQ到實體 - 得到所有相關實體領域到一個字符串
PersonId
PersonName
PersonPhone
我有房子實體
HouseID
HouseType
HouseSize
兩個實體與多對多的關係關係。 我需要將一個人(其中有許多房屋)的所有HouseType放入一個字符串中。
您可以使用Enumerable.Aggregate方法輕鬆地連接序列中的多個字符串。
你的情況,你必須先項目House
實體的名單到House.HouseType
字符串列表,然後總成一個單一的字符串:
var houseTypes = person.Houses.Select(i => i.HouseType).AsEnumerable();
var emptyResult = "0";
return houseTypes.Any() ?
houseTypes.Select(i => i.ToString())
.Aggregate((current, next) => current + ", " + next) :
emptyResult;
或者你可以簡單地說, :
var houseTypes = person.Houses
.Select(i => i.HouseType)
.AsEnumerable()
.Select(i => i.ToString());
return String.Join(", ", houseTypes);
它會返回一個空字符串 WH houseTypes
序列爲空。
更新:
如果您使用實體框架4或以上,你可以使用built-in SQL functions之一,直接在數據庫中執行轉換爲字符串:
var houseTypes = person.Houses
.Select(i => SqlFunctions.StringConvert((double)i.HouseType))
.AsEnumerable()
return String.Join(", ", houseTypes);
你的意思是像?:
var data = context.People.Where(p => p.PersonId == <id>).SelectMany(p => p.Houses).Select(h => h.HouseType);
var result = string.Join(<separator>, data);
var houseTypes = person.Houses
.Select(i => i.HouseType).ToList();
return string.Join(" ", houseTypes.Select(x=>x.ToString()));
我houseType不如因此我得到一個錯誤「不能將隱式轉換類型'字符串'轉換爲'short'」 – Kulpemovitz 2012-02-02 13:32:11
@Kulpemovitz如果'HouseType'屬性類型短,則可以使用'ToString()'轉換爲一個字符串。我更新了我的例子。 – 2012-02-02 13:49:16
太好了,但如果這個人沒有房子,現在就會失敗。但我仍然需要結果中的人 – Kulpemovitz 2012-02-02 13:57:33