问题
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?
回答1:
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)
});
回答2:
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;
}
来源:https://stackoverflow.com/questions/4095658/how-do-i-concatenate-strings-in-entity-framework-query