Вы можете легко объединить несколько строк из последовательности с помощью метода Enumerable.Aggregate .
В вашем случае вам придется сначала project список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);
который вернет пустую строку , когда последовательность houseTypes
пуста.
Обновление:
Если вы используете Entity Framework 4или выше, вы можете использовать одну из встроенных функций SQL , чтобы выполнить преобразование в строку непосредственно в базе данных:
var houseTypes = person.Houses
.Select(i => SqlFunctions.StringConvert((double)i.HouseType))
.AsEnumerable()
return String.Join(", ", houseTypes);