How do I concatenate strings in Entity Framework 4 I have a data from a column and I want to save as a string a comma separated string like "value1, value2, value3"
Is there a method or an operator do do this in EF4?
Example: lets say that I have two columns Fruit
and Farms
with the following values:
- Apples
- Bananas
- Strawberries
If I do like this
var dataSource = this.context
.Farms
.Select(f => new
{
f.Id,
Fruits = string.Join(", ", f.Fruits)
});
Sure I will get this error
LINQ to Entities does not recognize the method 'System.String Join(System.String, System.Collections.Generic.IEnumerable`1[System.String])' method, and this method cannot be translated into a store expression.
Is there any solution to this?
You have to execute the query before projecting. Otherwise EF tries to translate the Join
method into SQL
(and obviously fails).
var results = this.context
.Farms
.ToList()
.Select(f => new
{
f.Id,
Fruits = string.Join(", ", f.Fruits)
});
Took @Yakimych answer and thought would provide mine if someone needed:
using (myDBEntities db = new myDBEntities())
{
var results = db.Table
.ToList()
.Where(x => x.LastName.StartsWith("K"))
.Select(
x => new
{
x.ID,
Name = x.LastName + ", " + x.FirstName
}
);
lstCoaches.DataValueField = "ID";
lstCoaches.DataTextField = "Name";
lstCoaches.DataSource = results;
lstCoaches.DataBind();
ListItem item = new ListItem
{
Value = "0",
Text = "-- Make a Selection --"
};
lstCoaches.Items.Insert(0,item);
lstCoaches.SelectedIndex = 0;
}