我想使用C#和SimpleDB检查一个属性,而不必遍历特定项目的所有属性。
例如,如果我有我的域:“MyDomain”,并且我有一个项目的三个属性(项目是:george@george.com)。
这三个属性是:
名称
注册
触点
例如,这是我的数据:
MyDomain(域)
george@george.com(item)
George Doe(属性)
3-1-12(属性)
mike@mike.com(属性)
我遇到的问题是我的代码将循环遍历george@george.com项目中的所有3个属性。
例如;当我运行我的代码时,输出是:
未找到联系人
找不到联系人
联系方式:mike@mike.com
因为我的代码循环遍历george@george.com项目的所有3个属性。
我想让我的C#代码只检查“Contacts”属性,而不是遍历george@george.com项目的所有属性。
有人可以告诉我该怎么做吗?
AmazonSimpleDB sdb = AWSClientFactory.CreateAmazonSimpleDBClient();
String selectExpression = "Select * From MyDomain Where Email = 'george@george.com'";
SelectRequest selectRequestAction =
new SelectRequest().WithSelectExpression(selectExpression);
SelectResponse selectResponse = sdb.Select(selectRequestAction);
if (selectResponse.IsSetSelectResult())
{
SelectResult selectResult = selectResponse.SelectResult;
foreach (Item item in selectResult.Item)
{
foreach (Amazon.SimpleDB.Model.Attribute attribute in item.Attribute)
{
if (attribute.IsSetName())
{
if (attribute.Name == "Contact")
{
if (attribute.IsSetValue())
{
Console.WriteLine("Contact: {0}", attribute.Value);
}
}
else
{
Console.WriteLine("No Contacts Found");
}
}
}
}
}
我希望它直接检查“联系人”属性以查看是否有值,而不是遍历所有属性。
有人能告诉我一个关于如何实现这个目标的C#代码示例吗?谢谢。
编辑:我仍然想要遍历“联系人”属性中的所有“联系人”。我只是不想遍历所有没有名称“Contacts”的属性。 “联系人”属性可以容纳多个联系人,我仍然需要从属性中获取所有这些联系人。
以下Ken的这行代码:
字符串值= item.Attribute.First(a => a.Name ==“Contact”)。值
停止循环不同的属性,但它只返回“联系人”属性中的1个联系人,即使“联系人”属性中存储了多个联系人。
答案 0 :(得分:2)
您可以使用Attribute运行Amazon simpleDB Query。
select <attribute_name> from <domain_name>
Amazon SimpleDB将仅返回具有此属性的项目,作为响应,即使项目具有其他属性,您也只会获得此属性。