Member 11820531 Ответов: 2

Как учесть одно имя в C#?


У меня есть проблема, когда я пытаюсь импортировать данные из одной таблицы 1 в другую с помощью веб-формы. Моя проблема заключается в том, что импортируется только около 75% данных. Одна из существующих проблем заключается в том, что для имени работника было введено что-то вроде "подрядчик". На данный момент я разделяю имена, если есть имя и фамилия. (никаких отчеств, foriegn и т. д.)

Однако я хочу назначить "подрядчику" идентификатор по умолчанию "50124". (см. код ниже)
Я знаю, если операторы, заканчивающиеся тегом, в основном пропускают это задание. Но я поместил его туда, потому что у меня все еще есть доступ к другим необходимым полям.

protected void uxTransferBtn_Click(object sender, EventArgs e)
{
    var importLog = new System.Text.StringBuilder();

    var totalRecords = 0;
    var recordsProcessed = 0;
    var dcWorkerMatched = 0;
    var dcWorkerNotMatched = 0;
    var insertSuccess = 0;
    var insertFailed = 0;

    var accountTrackerImportSVC = new AccountTrackerImportSVC();
    
    var dtInfo = GetContent(); // Populated dtInfo With Table

    totalRecords = dtInfo.Rows.Count;

    foreach (DataRow drItem in dtInfo.Rows)
    {
        recordsProcessed++;


        // Get Worker Num From LastName_PreferredFirstName
        var worker= drItem["WorkerName"].ToString();
        var fullName = worker.Split(' ', '/');
        var allName = fullName;

        if (allName.Length == 2) // Believe my problem begins here
        {
            var firstName = fullName[0];
            var lastName = fullName[1];
            var dtWorkerNum = AccountTrackerImportDAL.ViewWorkerNumByLastNameFirstName(lastName, firstName);

            var dcWorkerNum = "";

            if (dtWorkerNum.Rows.Count == 1)
            {
                dcWorkerNum = dtWorkerNum.Rows[0]["WorkerNum"].ToString();

                dcWorkerMatched++;
            }
            else
            {
                dcWorkerNum = "50124";

                dcWorkerNotMatched++;
            }

            var connectionType = drItem["ConnectionTypeDesc"].ToString();
            var dtConnectionType = AccountTrackerImportDAL.ViewConnectonTypeByDesc(connectionType);
            var connectionTypeID = "";

            if (dtConnectionType.Rows.Count == 1)
            {
                connectionTypeID = dtConnectionType.Rows[0]["ConnectionTypeID"].ToString();
            }
            else
            {
                var connectionTypeSVC = new ConnectionTypeSVC();
                connectionTypeSVC.InsertConnectionType(connectionType, "System Admin");

            }

                    
            var result = new AccountTrackerEntrySVC().InsertAccountTrackerEntry(//SafeValueAccessor.GetControlValue(uxDataCustodianDdl),
                          dcWorkerNum,
                          drItem["Data1"].ToString(),
                          drItem["Data2"].ToString(),
                          drItem["Data3"].ToString(),
                          drItem["Data4"].ToString(),
                          drItem["Data5"].ToString(),
                          drItem["Data6"].ToString(),
                          drItem["Data7"].ToString(),
                          drItem["Data8"].ToString(),
                          "System Admin",
                          connectionTypeID,
                         (bool)drItem["Data9"],
                         (bool)drItem["Data10"],
                         drItem["Data11"].ToString(),
                         drItem["Number"].ToString(),
                         (bool)drItem["Requirement"]);

            if (result.Successful)
            {
                insertSuccess++;
            }
            else
            {
                importLog.Append("<br/>Error Processing Line Number: " + drItem["Number"].ToString());
                importLog.Append(result.Message);

                insertFailed++;
            }

        } //ending if bracket

    }

    importLog.Append("<br/><br/>");
    importLog.Append("---------------------------------------");
    importLog.Append("<br/>");
    importLog.Append("Summary");
    importLog.Append("<br/>");
    importLog.Append("Total Records Found: " +totalRecords);
    importLog.Append("<br/>");
    importLog.Append("Total Records Processed: " + recordsProcessed);
    importLog.Append("<br/>");
    importLog.Append("Total Data Custodians Matched:" + dcWorkerMatched);
    importLog.Append("<br/>");
    importLog.Append("Total Data Custodians Not Matched:" + dcWorkerNotMatched);
    importLog.Append("<br/>");
    importLog.Append("Total Success:" + insertSuccess);
    importLog.Append("<br/>");
    importLog.Append("Total Failed:" + insertFailed);

    //-........

    importLog.Append("<br/>");
    importLog.Append("---------------------------------------");

    var emailSVC = new Email();
    emailSVC.SendApplicationError("Data Import", "Import Summary", importLog.ToString());

    Master.HideProgressIndicator();
}


Где я могу внести коррективы, чтобы учесть, что "подрядчик" является item = Fullname? Пожалуйста, укажите код psuedo. Я ужасно разбираюсь в программировании, но мне нужно сдать летние курсы.

virusstorm

Никто здесь не поможет тебе с домашним заданием. Он разработан, чтобы быть сложным, чтобы вы могли чему-то научиться. Как преподаватель колледжа по совместительству, мой совет - поговорить с преподавателем класса.

Кроме того, если вы плохо разбираетесь в программировании, зачем вам брать уроки программирования?

Member 11820531

Я понимал, почему люди не захотят помочь, если это будет тест, но вы никогда не сможете этого узнать. Я пошел в класс, чтобы бросить вызов самому себе и получить зачет по выбору. Это онлайн-класс, где профессора трудно достать. Я действительно хорошо справился с началом работы, но материал стал намного сложнее.

Member 11820531

В любом случае я разберусь с этим.

2 Ответов

Рейтинг:
2

P Conny M Westh

Вот решение, где вы можете использовать систему.Linq для проверки наличия существующих записей в списке или в EntityFramework.

Хитрость заключается в том, чтобы прочитать объект из списка и проверить, был ли результат нулевым, как в этом фрагменте кода:

var entityFirst = myUniqueInstance.SingleOrDefault(p => p.FirstName == newPersonFirst.FirstName && p.FamilyName == newPersonFirst.FamilyName);
if (entityFirst != null)
{
    // We found an existing person in the List of objects that matches our condition
    Console.WriteLine($"Rejected First: {newPersonFirst}");
    throw new Exception($"Person {newPersonFirst} already exists in our List!");
}
else
{
    // We did NOT find an existing person that matches out conditions
    // Now it is "pretty" save to add this person
    myUniqueInstance.Add(newPersonFirst);
    Console.WriteLine($"Added First: {newPersonFirst}");
}







using System;
using System.Collections.Generic;
using System.Linq;

namespace FindIfRecordExist
{
    public class MyUniqueClass
    {
        public int MyUniqueClassID { get; set; }
        public string FirstName { get; set; }
        public string FamilyName { get; set; }

        public MyUniqueClass()
        {
        }

        public MyUniqueClass(string FirstName, string FamilyName)
        {
            this.FirstName = FirstName;
            this.FamilyName = FamilyName;
        }

        public override string ToString()
        {
            //return $"{MyUniqueClassID} {FirstName} {FamilyName}";
            return $"{FirstName} {FamilyName}";
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // This example is made with a list but this works in Entity Framework
                // And many other solution when LINQ is involved, check You 
                // include "using System.Linq;" 
                List<MyUniqueClass> myUniqueInstance = new List<MyUniqueClass>();

                myUniqueInstance.Add(new MyUniqueClass("Donald", "Truman"));
                myUniqueInstance.Add(new MyUniqueClass("Ronald", "Clinton"));
                myUniqueInstance.Add(new MyUniqueClass("Bill", "Reagan"));
                myUniqueInstance.Add(new MyUniqueClass("Hillary", "Bold"));

                foreach(var p in myUniqueInstance)
                {
                    Console.WriteLine($"Added: {p}");
                }

                try
                {
                    MyUniqueClass newPersonFirst = new MyUniqueClass("Raymond", "Kennedy");

                    // Check if there is already anyone with the same name as our new person
                    var entityFirst = myUniqueInstance.SingleOrDefault(p => p.FirstName == newPersonFirst.FirstName && p.FamilyName == newPersonFirst.FamilyName);
                    if (entityFirst != null)
                    {
                        // We found an existing person in the List of objects that matches our condition
                        Console.WriteLine($"Rejected First: {newPersonFirst}");
                        throw new Exception($"Person {newPersonFirst} already exists in our List!");
                    }
                    else
                    {
                        // We did NOT find an existing person that matches out conditions
                        // Now it is "pretty" save to add this person
                        myUniqueInstance.Add(newPersonFirst);
                        Console.WriteLine($"Added First: {newPersonFirst}");
                    }

                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }



                // ------------------------------------------------------------
                // Now lets run this again and se if our new person exists....
                // ------------------------------------------------------------

                try
                {
                    MyUniqueClass newPersonSecond = new MyUniqueClass("Raymond", "Kennedy");

                    // Check if there is already anyone with the same name as our new person
                    var entitySecond = myUniqueInstance.SingleOrDefault(p => p.FirstName == newPersonSecond.FirstName && p.FamilyName == newPersonSecond.FamilyName);
                    if (entitySecond != null)
                    {
                        // We found an existing person in the List of objects that matches our condition
                        Console.WriteLine($"Rejected Second: {newPersonSecond}");
                        throw new Exception($"Person {newPersonSecond} already exists in our List!");
                    }
                    else
                    {
                        // We did NOT find an existing person that matches out conditions
                        // Now it is "pretty" save to add this person
                        myUniqueInstance.Add(newPersonSecond);
                        Console.WriteLine($"Added Second: {newPersonSecond}");
                    }


                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }




        }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
    }
}


Рейтинг:
0

Patrice T

Я не специалист по C#, но знаю несколько универсальных вещей.
1) проблема может быть связана с вашей базой данных. Как ограничение уникальных значений в поле.
2) Есть способ узнать, где ваш код терпит неудачу и почему. Используйте отладчик.

С помощью отладчика вы сможете видеть, как ваш код выполняется шаг за шагом, и следить за каждым изменением переменной.
Таким образом, ваш собственный код больше не является черным ящиком, вы увидите, что делает ваш код, и сможете сравнить его с тем, что вы ожидаете.
Непосредственный результат заключается в том, что вы сужаете "что не так", Видя, когда это идет не так.

Дайте ему попробовать, опыт бесценен.