0

我有以下代码:

    //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>名为的对象repeatUserIds,其中包含一个静态 UserId 列表,可能是 5 个左右。我希望能够让我的SomeCollection.Where(x => repeatUserIds.Contains(x.UserId))语句返回repeatUserIds如果有匹配项,如果没有匹配repeatUserIds项(如果 repeatUserIds.Contains retunrs false),则返回具有最旧用户 ID 的项目,然后只返回 SomeCollection 中的第一个项目。

4

1 回答 1

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不能保证对象中元素的顺序。您可能希望SortedList使用repeatUserIds.

于 2012-10-09T12:13:07.787 回答