Search code examples
c#asp.net-mvcapiforeachasp.net-apicontroller

Trim all but 2 characters after comma in for each in ASP.NET MVC Api call C#


In my for each loop, I am needing to trim the full name being returned in my stored procedure. I would need the "last name, first 2 characters of first name" but trim everything else.

foreach (var mrnRecord in mrnRecords)
{
    var filtered = dt.AsEnumerable().Where(x => x.Field<string>("MRN").Contains(mrnRecord));

    patient = new Patient();
    orders = new List<Order>();

    patient.MRN = filtered.First().Field<string>("MRN");
    patient.CurrentLocation = filtered.First().Field<string>("CurrentLocation") + "<br />" + filtered.First().Field<string>("PatientName") + "<br />" + filtered.First().Field<string>("Isolation");
    patient.PatientName = filtered.First().Field<string>("PatientName");
    patient.PatientType = filtered.First().Field<string>("PatientType");
    patient.VisitId = filtered.First().Field<string>("VisitID");

Solution

  • Assuming the name comes through as "First Middle Last", you could use

    var myString = "Franklin Delano Roosevelt";
    var stringArr = myString.Split(' ');
    var lastFirstTwoInitials = stringArr[2] + ", " + stringArr[0].Substring(0, 2);
    

    EDIT: Just saw your comment about format being "Last, First Middle"

    var stringArr = patient.PatientName.Split(' ');
    var lastFirstTwoInitials = stringArr[0] +  " " + stringArr[1].Substring(0, 2);
    

    or

    var stringArr = patient.PatientName.Split(' ');
    var lastFirstTwoInitials = patient.PatientName.Substring(0, stringArr[0].Length + 3);