C# 为什么';t IEnumerable.Where()在DynamoDBContext.Scan()结果中查找我的对象?

C# 为什么';t IEnumerable.Where()在DynamoDBContext.Scan()结果中查找我的对象?,c#,amazon-dynamodb,object-persistence,C#,Amazon Dynamodb,Object Persistence,在C#中使用AWS DynamoDB“对象持久性模型”时,遇到了一个有趣的问题;分析扫描操作的结果。在下面的代码中,我在Datastore.userIndicators(这是一个包含对象列表、按用户名索引的字典)中的条目始终是空列表 var allIndicators = context.Scan<Indicator>(); Datastore.globalIndicators = allIndicators.Where(i => i.UserName == "*").ToL

在C#中使用AWS DynamoDB“对象持久性模型”时,遇到了一个有趣的问题;分析扫描操作的结果。在下面的代码中,我在Datastore.userIndicators(这是一个包含对象列表、按用户名索引的字典)中的条目始终是空列表

var allIndicators = context.Scan<Indicator>();

Datastore.globalIndicators = allIndicators.Where(i => i.UserName == "*").ToList();
var userDefinedIndicators = allIndicators.Where(i => i.UserName != "*");

foreach (var username in userDefinedIndicators.Select(i => i.UserName).Distinct())
{
    Datastore.userIndicators[username] = userDefinedIndicators.Where(i => i.DynamoDbRangeKey.StartsWith(username)).ToList();
}
var allIndicators=context.Scan();
Datastore.globalIndicators=allIndicators.Where(i=>i.UserName==“*”).ToList();
var userDefinedIndicators=allIndicators。其中(i=>i.UserName!=“*”);
foreach(userDefinedIndicators.Select(i=>i.username.Distinct()中的var username)
{
Datastore.userIndicators[username]=userDefinedIndicators.Where(i=>i.DynamoDbRangeKey.StartsWith(username)).ToList();
}

因此,例如,如果我的表中有包含值为“userA”的属性“UserName”的条目,则在运行此代码时,字典“Datastore.userIndicators”将以键“userA”的条目结束,但相应的值将是一个空列表。

在摆弄此项并遵循直觉之后,我修改了我的作业

var allIndicators = context.Scan<Indicator>();
var allIndicators=context.Scan();

var allIndicators=context.Scan().ToList();

事实证明(由确认),DynamoDBContext.Scan()方法的返回是延迟加载的。调用.ToList()强制枚举并加载所有结果

var allIndicators = context.Scan<Indicator>().ToList();