如何在特定集合中选择.First()的优先级

时间:2012-10-08 22:26:44

标签: c# asp.net entity-framework

我有以下代码:

    //Pretend there is a few static values in this list
    List<string> repeatUserIds = new List<string>();

    SomeCollection.Where(x => repeatUserIds.Contains(x.UserId)).First().MyCol = "somevalue";

    MyEntities.SaveChanges(false);
    scope.Complete();
    MyEntities.AcceptAllChanges();                            

我还有一个名为List<string>的{​​{1}}对象,其中包含一个静态UserId的列表,可能是5个左右。我希望能够使repeatUserIds语句返回SomeCollection.Where(x => repeatUserIds.Contains(x.UserId))中具有OLDEST用户ID的项目,如果匹配,如果repeatUserIds上没有匹配(如果repeatUserIds)。包含retunrs false),然后返回SomeCollection中的第一个项目。

1 个答案:

答案 0 :(得分:0)

您可以使用以下事实:在连接中保留第一个集合的排序顺序。因此,可以通过两个步骤找到“第一”项目:

var dbList = SomeCollection.Where(x => repeatUserIds.Contains(x.UserId))
             .ToList();

repeatUserIds.Join(dbList, s => s, x => x.UserId, (s,x) => x)
             .First().MyCol = "somevalue";

但请注意,理论上,List对象中的元素顺序无法保证。您可能希望repeatUserIds使用SortedList