Расщепление строки внутри переменной в c # - PullRequest
2 голосов
/ 28 ноября 2011

Я постараюсь сформулировать это как можно более упрощенно, потому что у меня довольно сложный вопрос (или я так думаю !!!).

В настоящее время у меня есть переменная, привязанная к ретранслятору, которая перечисляет группу профилей для различных сотрудников в рамках бизнеса.

Внутри переменной у меня есть поле "Job_Title", которое содержит как сектор, в котором они работают, так и название должности, разделенные символом '/'. То, чего я пытаюсь добиться, это назначить установленный класс DIV на основе сектора в строке «Job_Title».

Теперь я могу добиться этого в одном профиле, выполнив следующие действия:

DT_Control_Profile Pro =
    db.DT_Control_Profiles
      .SingleOrDefault(x => x.PageControlID == PageControl_ID);

if (Pro != null)
{

    String[] cutsector = Pro.Job_Title.Split('/');
    foreach (string s in cutsector)
    {
        if (s.Trim().ToUpper() == "WELL ENGINEERING")
        {
            DIV_SECOTR.Attributes.Add("class", "sectorcon conwelleng");
        }
        else if (s.Trim().ToUpper() == "RESEVOIR ENGINEERING")
        {
            DIV_SECOTR.Attributes.Add("class", "sectorcon conreseng");
        }
        else if (s.Trim().ToUpper() == "GEO SCIENCES")
        {
            DIV_SECOTR.Attributes.Add("class", "sectorcon congeoscie");
        }
        else if (s.Trim().ToUpper() == "FACILITES ENGINEERING")
        {
            DIV_SECOTR.Attributes.Add("class", "sectorcon confacilieng");
        }
    };

Однако я изо всех сил пытаюсь придумать способ достижения этого, используя переменную, которая вытягивает несколько профилей на страницу!

Пока у меня есть это:

var leaders = from x in db.DT_Control_Profiles
              where x.FeatureProfile == true
                 && x.DT_PageControl.DT_SitePage.VennID == codesnippets.VennID
              select new
              {
                  img = Path + x.ImageUrl,
                  x.Job_Title,
                  x.Name,
                  about = codesnippets.StringSize(x.Biography, 100),
                  link = "~/" + x.DT_PageControl.DT_SitePage.PageName,
              };

Я думаю, что решение будет лежать в цикле foreach, но я не знаю, с чего начать!

Кто-нибудь может указать мне правильное направление ??

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Вы должны иметь возможность вызывать функцию внутри вашего запроса linq.Создайте функцию, подобную этой:

public static string GetHtmlClass(DT_Control_Profile Pro)
{
    String result = "";
    String[] cutsector = Pro.Job_Title.Split('/');
    foreach (string s in cutsector)
    {
        if (s.Trim().ToUpper() == "WELL ENGINEERING")
        {
            result += "sectorcon conwelleng ";
        }
        else if (s.Trim().ToUpper() == "RESEVOIR ENGINEERING")
        {
            result += "sectorcon conreseng ";
        }
        else if (s.Trim().ToUpper() == "GEO SCIENCES")
        {
            result += "sectorcon congeoscie ";
        }
        else if (s.Trim().ToUpper() == "FACILITES ENGINEERING")
        {
            result += "sectorcon confacilieng ";
        }
    }
}

После чего ваш запрос должен работать следующим образом:

var leaders = from x in db.DT_Control_Profiles
              where x.FeatureProfile == true
                 && x.DT_PageControl.DT_SitePage.VennID == codesnippets.VennID
              select new
              {
                  img = Path + x.ImageUrl,
                  x.Job_Title,
                  x.Name,
                  about = codesnippets.StringSize(x.Biography, 100),
                  link = "~/" + x.DT_PageControl.DT_SitePage.PageName,
                  class = GetHtmlClass(x)
              };

Это должно привести вас к классу прямо в результате запроса.

0 голосов
/ 28 ноября 2011

Для начала я бы поместил ваш Сектор -> Отображения классов в словарь пары ключ-значение http://msdn.microsoft.com/en-us/library/xfhwa508.aspx Это просто чище и приятнее сделать то же самое.

Яне зная, где вы пытаетесь сохранить атрибут класса, вы можете выполнить foreach для коллекции лидеров и поиск из своего словаря и присоединить его, или вы можете получить поиск в точке отображения.

Редактировать: Как говорит AVee, вы можете использовать поиск в своем операторе linq, который, если вы хотите, чтобы только название должности отображалось с сектором, выбирающим только класс div, для которого я бы, вероятно, пошел.

...