我想检查使用C#和SimpleDB的属性,而不必遍历特定项目的所有属性。获取SimpleDB属性,无需循环通过项目的所有属性
例如,如果我有我的域名:“MyDomain”,并且我有一个项目的三个属性(该项目是:[email protected])。
的三个属性是:
名称
注册
联系
因此,例如,这是我的数据:
MYDOMAIN(域)
乔治@乔治.com(item)
乔治·多伊(属性)
3-1-12(属性)
[email protected](属性)
我遇到的问题我的代码将遍历[email protected]项目中的所有3个属性。
例如;当我运行我的代码输出为:
找不到联系人
找到
联系电话联系人:[email protected]
,因为我的代码是通过为乔治@乔治所有3个属性循环。 com项目。
我想让我的C#代码只检查“联系人”属性,而不是遍历[email protected]项目的所有属性。
有人可以告诉我该怎么做吗?
AmazonSimpleDB sdb = AWSClientFactory.CreateAmazonSimpleDBClient();
String selectExpression = "Select * From MyDomain Where Email = '[email protected]'";
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#代码示例?谢谢。
编辑:我仍然想通过“联系人”属性中的所有“联系人”进行循环。我只是不想循环所有没有名称“联系人”的属性。 “联系人”属性可以拥有多个联系人,我仍然需要从属性中获取所有这些联系人。
这行Ken的代码如下:
string value = item.Attribute.First(a => a.Name ==“Contact”)。值
可以停止不同属性的循环,但只会从“联系人”属性返回1个联系人,即使“联系人”属性中存储的联系人超过1个也是如此。
您可以尝试'字符串值= item.Attribute.First(a => a.Name ==“Contact”)。值'如果您知道*它存在或'FirstOrDefault'并检查结果。 – 2012-03-02 17:49:51
这可以停止循环,但如果在“联系人”属性中有多个联系人,它只会返回第一个联系人。我仍然想要遍历“联系人”属性中的所有不同联系人,我只是不想循环查看“联系人”以外的所有不同属性。 – fraXis 2012-03-02 20:09:23