Получить атрибут SimpleDB, не просматривая все атрибуты для элемента

Я хотел бы проверить атрибут с использованием C# и SimpleDB без необходимости перебирать все атрибуты для конкретного элемента.

Например, если у меня есть мой домен: "Мой домен", и у меня есть три атрибута для элемента (элемент: george@george.com).

Три атрибута:

название
Зарегистрироваться
контакты


Так, например, это мои данные:

MyDomain (домен)
george@george.com (предмет)
Джордж Доу (атрибут)
3-1-12 (атрибут)
mike@mike.com (атрибут)



Проблема, с которой я столкнулся, заключается в том, что мой код перебирает все 3 атрибута в элементе george@george.com.
Например; когда я запускаю свой код, вывод:

Контакты не найдены
Контакты не найдены
Контакт: mike@mike.com

потому что мой код перебирает все 3 атрибута для элемента george@george.com.

Я хочу, чтобы мой код C# проверял только атрибут "Контакты" и НЕ просматривал все атрибуты элемента 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# о том, как мне это сделать? Благодарю.


РЕДАКТИРОВАТЬ: Я все еще хочу перебрать все "Контакты" в атрибуте "Контакты". Я просто не хочу перебирать все атрибуты, которые не имеют названия "Контакты". Атрибут "Контакты" может содержать более одного контакта, и мне все еще нужно получить все из этого атрибута.

Эта строка кода от Кена ниже:

строковое значение = item.Attribute.First(a => a.Name == "Контакт"). Значение

останавливает зацикливание различных атрибутов, но возвращает только 1 контакт из атрибута "Контакты", даже если в атрибуте "Контакты" хранится более 1 контакта.

1 ответ

Решение

Вы можете запустить Amazon simpleDB Query с атрибутом.

select <attribute_name> from <domain_name>

А Amazon SimpleDB будет возвращать только элементы, имеющие этот атрибут, и в ответ вы получите только этот атрибут, даже если элементы имеют другие атрибуты.

Другие вопросы по тегам