Cum pot transforma un System.Guid într-un șir de caractere în C# (Programare, C#)

Samantha J T Star a intrebat.

Am următoarea definiție de câmp într-o clasă:

   public Nullable<System.Guid> GlobalId { get; set; }

Am o altă clasă cu următoarele:

   public string GlobalId { get; set; }

Aș dori să pun valoarea de din câmpul cu tipul System.Guid în șirul de caractere.

Am încercat să fac acest lucru aici:

        var questionIds = _questionsRepository.GetAll()
            .Where(m => m.Problem != null &&
            m.Problem.SubTopic != null &&
            m.Problem.SubTopic.Topic != null &&
            m.Problem.SubTopic.Topic.SubjectId == 1)
            .Select(m => new QuestionHeader { GlobalId = (string) m.GlobalId })
            .ToList();
        return questionIds;

Dar îmi dă o eroare care spune::

   Cannot convert type 'System.Guid?' to 'string'

Poate cineva să-mi spună cum aș putea face acest lucru?

Comentarii

  • Vă rugăm să consultați documentația pentru Nullable(T).ToString –  > Por Steve.
  • Ți-aș recomanda să citești câteva tutoriale de bază în c#. te vei bucura să înțelegi raționamentul din spatele multor „erori ciudate” –  > Por Letterman.
7 răspunsuri
ken2k

Puteți obține reprezentarea în șir de caractere a GUID-ului prin apelarea lui ToString() pe acesta.

Deoarece GUID-ul dvs. este nul, verificați dacă este nul înainte de a apela ToString():

string myString = guid.HasValue ? guid.Value.ToString() : "default string value";

Comentarii

  • Conform stackoverflow.com/questions/2449008/nullable-tostring, nu este necesar dacă doriți să reprezentați valoarea nulă ca un șir gol. –  > Por Euphoric.
  • Ei bine, acest răspuns este totuși o modalitate bună de a face acest lucru dacă se dorește să se aibă o valoare implicită. –  > Por DarkWanderer.
  • @Euphoric @Euphoric Adevărat, dar, după cum ai spus, implică faptul că se obține string.Empty în cazul în care este nulă (și nu știu ce vrea OP ca valoare implicită). –  > Por ken2k.
Euphoric

Nu se face cast la string. Folosești ToString() metoda.

Așa:

GlobalId = m.GlobalId.ToString()

Comentarii

  • Ghidul este nul, ar trebui să verificați dacă este nul. –  > Por anar khalilov.
Dalorzo

Puteți converti un Guid cu .ToString():

Guid gid = Guid.NewGuid();

string myID = gid.ToString();

Sau folosind

Convert.ToString

Cum ar fi:

Guid gid = Guid.NewGuid();

string myID = Convert.ToString(gid);

Selman Genç

Utilizați Convert.ToString în loc de (string)

GlobalId =  Convert.ToString(m.GlobalId)

Guru Stron

Folosiți doar ToString() metoda

Guid? g = null;    
string s = g.ToString();

în cazul lui null se va returna String.Empty în caz contrar, veți obține o reprezentare în șir de caractere a Guid

Denis
GlobalId = m.GlobalId.ToString()

Anarion
string Id = Guid.NewGuid().ToString();

Tags: