linq C# AJuda

alfinete

Power Member
boa tarde

Código:
        var Dtype = _unitOfWork.Repository<vwOperatorVouchersImportDetail>().Query()
                                    .Select ().Where(p=> p.OperatorVoucherImportID == ImportID)
                                    .ToList();

vwOperatorVouchersImportDetail

Código:
  public class vwOperatorVouchersImportDetail : Repository.Pattern.Ef6.Entity
    {

        public Int32 ID { get; set; }
        public Int32 OperatorVoucherImportID { get; set; }
        public Nullable<Int32> RequestID { get; set; }
        public string CardNumber { get; set; }
        public string VoucherCode { get; set; }
        public DateTime DataVenda { get; set; }

         public string Description { get; set; }
        public string Comment { get; set; }
        public Nullable<Int32> ImportStatusID { get; set; }
        public string ErrorDescription { get; set; }
        public string Estado { get; set; }



        
    }


na estrutura temos um campo do tipo datetime chamadao "DataVenda"

aqui a questão é : na view no sql devolve da datavenda no formato yyyy-mm-dd - no formato corercto
ao fazer a query referente a var dtype devolve dd-mm-yyyy , e não estou a fazer nenhuma nova formatação

há possibilidade de alterar isto quando estou a gerar os valores da lista ?

obrigado aguardo ajuda
 
Olá.

O formato da data é "dd-MM-yyyy", provavelmente porque está a ser influenciado pelo formato da data do teu SO. Ou seja, se o teu SO está a utilizar a cultura (pt-PT), quando convertes o valor do DateTime para string, a aplicação usa por defeito a cultura do SO.

Se queres um formato específico para a data em string, usa um overload do método ToString que aceita como parâmetro o formato pretendido em string. Exemplo:

C#:
string formattedDate = obj.DataVenda.ToString("yyyy-MM-dd");

Podes ver aqui a documentação da Microsoft sobre como usar o ToString para costumizar o formato da data.

Ao nível da classe, tens também como opção as DataAnnotations:

Código:
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}")]
public DateTime DataVenda { get; set; }

Usas a propriedade "DataFormatString" da Data Annotation "DisplayFormat", para definires ao nível da classe o formato string da DataVenda.
 
obrigado , ja tinha testado essas formas todas que falaste e nenhuma funcionou

porque pelo que percebi quando no c# fazemos datetime.parse independentements da formatação que la pomos ele vai sempre por default com a configuração de sistema.

arrabjei uma forma através de Js que funcionou em especifico para a minha situação

Código:
function GetFormatedDate (dateObject) {
    const options = {

        year: 'numeric',
        month: 'numeric',
        day: 'numeric',
    };
    var newdate = new Date(dateObject);

    var StrDate = newdate.toLocaleDateString('en-US', options);

    var DateParts = StrDate.split("/")

    var NewDate = (StrDate == "1/1/1900" || StrDate == "01/01/1900") ? "" : DateParts[2] + "-" + (DateParts[1].length == 1 ? "0" + DateParts[1] : DateParts[1]) + "-" + (DateParts[0].length == 1 ? "0" + DateParts[0] : DateParts[0]);


    return NewDate;
};
 
Back
Topo