how do I return entities from delimited list of Ids in EF5 Code First

大城市里の小女人 提交于 2019-12-22 08:10:00

问题


I want to hydrate a collection of entities by passing in a comma delimited list of Ids using EF5 Code First.

I would previously have created a table function in t-sql, passed in the comma delimited list of Ids, I'd then join this table to the target table and return my collection of records.

What is the most performant way of using EF5 Code First to achieve the same?

Update: I want to avoid having the full set of entities in memory first.

Update2: I'd ideally like the order of the entities to match the delimited list.


回答1:


I'd say to start out by converting the comma delimited list into a List<int> that contains all of the IDs that you would be going for. At that point, using your particular DbContext class you would do the following:

var entities = db.MyEntities.Where(e => myListOfIds.Contains(e.ID)).ToList();

Note: I only put the ToList at the end there because you were talking about hydrating the collection. Otherwise, with IEnumerable, there will be deferred execution of the query, and so it will not populate right away.




回答2:


You could do it like this, where you restrict the set of Entity objects by checking if their IDs belong to your list of IDs:

// Dummy list of POCO 'entity' objects (i.e. the Code first objects) just for the sake of this snippet
var entities = new List<Entity>();
entities.Add(new Entity() { ID = 1, Title = "Ent1" });
entities.Add(new Entity() { ID = 2, Title = "Ent2" });
entities.Add(new Entity() { ID = 3, Title = "Ent3" });

// List of ids to match
var ids = new List<int>();
ids.Add(1);
ids.Add(2);

// LINQ:
var selected = (from e in entities where ids.Contains(e.ID) select e).ToList();

Just for completeness, this is the dummy class used above:

// POCO (Code first) object
private class Entity
{
    public int ID { get; set; }
    public string Title { get; set; }
}


来源:https://stackoverflow.com/questions/15186847/how-do-i-return-entities-from-delimited-list-of-ids-in-ef5-code-first

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!