我有以下代码:
//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中的第一个项目。
答案 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
。