C# – GroupBy Sum and Count in LINQ Lambda

Como fazer um GROUP by apartir de uma Lista, usando Count e SUM juntos na mesma query Linq.
var SomatorioGroupBY =
ObjListapreenchida
.Select(x =>
new
{
Segmento = x.NM_SEGM,
ValorCarteira = x.VR_SAL_LIQUI,
ValorProducao = x.VR_PRO_VENDA,
}
)
.GroupBy(s => new { s.Segmento })
.Select(g =>
new
{
Segmento = g.Key.Segmento,
ValorCarteira = g.Sum(x => Math.Round(Convert.ToDecimal(x.ValorCarteira), 2)),
ValorProducao = g.Sum(x => Math.Round(Convert.ToDecimal(x.ValorProduto), 2)),
QtdEmpresas = g.Count()
}
);
Stack é um dos melhores lugares também pra obter exemplos práticos: https://stackoverflow.com/questions/21955475/linq-group-sum-multiple-columns

Conversões SQL Server Exemplos

	  Declare @d datetime
select @d = '20190429' --texto puro
--select @d = getdate()

select @d as OriginalDate,
convert(varchar,@d,100) as ConvertedDate,
100 as FormatValue,
'mon dd yyyy hh:miAM (or PM)' as OutputFormat
union all
select @d,convert(varchar,@d,101),101,'mm/dd/yy'
union all
select @d,convert(varchar,@d,102),102,'yy.mm.dd'
union all
select @d,convert(varchar,@d,103),103,'dd/mm/yy'
union all
select @d,convert(varchar,@d,104),104,'dd.mm.yy'
union all
select @d,convert(varchar,@d,105),105,'dd-mm-yy'
union all
select @d,convert(varchar,@d,106),106,'dd mon yy'
union all
select @d,convert(varchar,@d,107),107,'Mon dd, yy'
union all
select @d,convert(varchar,@d,108),108,'hh:mm:ss'
union all
select @d,convert(varchar,@d,109),109,'mon dd yyyy hh:mi:ss:mmmAM (or PM)'
union all
select @d,convert(varchar,@d,110),110,'mm-dd-yy'
union all
select @d,convert(varchar,@d,111),111,'yy/mm/dd'
union all
select @d,convert(varchar,@d,12),12,'yymmdd'
union all
select @d,convert(varchar,@d,112),112,'yyyymmdd'
union all
select @d,convert(varchar,@d,113),113,'dd mon yyyy hh:mm:ss:mmm(24h)'
union all
select @d,convert(varchar,@d,114),114,'hh:mi:ss:mmm(24h)'
union all
select @d,convert(varchar,@d,120),120,'yyyy-mm-dd hh:mi:ss(24h)'
union all
select @d,convert(varchar,@d,121),121,'yyyy-mm-dd hh:mi:ss.mmm(24h)'
union all
select @d,convert(varchar,@d,126),126,'yyyy-mm-dd Thh:mm:ss:mmm(no spaces)'

OUTLOOK TRAVANDO TODA HORA

OUTLOOK.EXE /cleanreminders /NoExtensions
OUTLOOK.EXE /safe

/noExtensions Inicia o Outlook com as extensões desativadas, mas listadas no Gerenciador de Suplementos.
/safe Inicia o Outlook sem extensões, Painel de Leitura ou personalização da barra de ferramentas.
/cleanreminders Limpa e gera novos lembretes.

Ultimamente tenho utilizado o Outlook em modo segurança pois algumas extensões do Outlook andam travando muito meu PC.

Eu recomendo a  opção, desta forma você conseguirá abrir o Outlook e analisar posteriormente suas extensões:

OUTLOOK.EXE /cleanreminders /NoExtensions

 

Adicionar barra de rolagem no VB6 – scroll vb6

Primeiro baixe o

MOUSE WHEEL

http://download.microsoft.com/download/e/f/b/efb39198-7c59-4ace-a5c4-8f0f88e00d34/vb6mousewheel.exe

E aqui passo a passo de como você deverá fazer para fazer funcionar o SCROLL NO VB6

DLL para registro

****
Click Start, click Run, type regsvr32 \VB6IDEMouseWheelAddin.dll, and then click OK.

Menu para adicionar a o Addin do Scroll vb6

Fonte: https://support.microsoft.com/en-us/help/837910/mouse-wheel-events-do-not-work-in-the-visual-basic-6-0-ide

VB6 – Gerar excel com retorno de uma procedure, colunas dinâmicas

Private Sub MENURpt_Click()
Dim sSql As String
Dim cTitulo As String
Dim DATA As String

DATA = InputBox("ENTRAR COM DATA: ", "Report EXCEL")

If DATA <> "" Then
    sSql = "exec sp_PROCEDURE_TAL'" & DATA & "'"
    cTitulo = "TÍTULO GERANDO NO VB6 EXCEL USANDO Excel.Application " & DATA 

    RptExcell sSql, cTitulo
End If

End Sub

 

Public Sub RptExcell(sSql As String, cTitulo As String)
'RECEBE O SQL E O TITULO

Dim aColumnas() As String
Dim nColumnas As Integer
Dim rdors As New ADODB.Recordset
Dim i As Integer

Screen.MousePointer = vbHourglass

' Ejecuto el Sql
Set rdors = gCnAdo.EjecutarRecordset(sSql)

' Leo los nombres de las columnas
nColumnas = rdors.Fields.Count
ReDim aColumnas(nColumnas)
For i = 0 To nColumnas - 1
aColumnas(i) = rdors(i).Name
Next i

' Cargo en Excel
Dim ExcelApp As New Excel.Application
Dim ExcelWorkbook As Excel.Workbook
Dim nFila As Long
Dim nHoja As Integer

ExcelApp.Workbooks.Add

nFila = 5
nHoja = 1

GoSub TituloColumnas

While Not rdors.EOF
For i = 1 To nColumnas
ExcelApp.Worksheets(nHoja).Cells(nFila, i) = rdors(i - 1)
Next i

nFila = nFila + 1
If nFila > 60000 Then
GoSub TituloHoja
nHoja = nHoja + 1

nFila = 5
GoSub TituloColumnas

End If

rdors.MoveNext
Wend

GoSub TituloHoja
ExcelApp.Visible = True

If rdors.State = adStateOpen Then rdors.Close

Set rdors = Nothing

Screen.MousePointer = vbDefault

Exit Sub

TituloHoja:
'Ajustando a largura das colunas antes de colocar o título
ExcelApp.Worksheets(nHoja).Columns.AutoFit

' Formato DO titulo
ExcelApp.Worksheets(nHoja).Cells(1, 1) = cTitulo
ExcelApp.Worksheets(nHoja).Cells(1, 1).Font.Bold = True
ExcelApp.Worksheets(nHoja).Cells(1, 1).Font.Size = 14
ExcelApp.Worksheets(nHoja).Cells(1, 1).Font.Underline = True

Return

TituloColumnas:
For i = 1 To nColumnas
' Nome
ExcelApp.Worksheets(nHoja).Cells(4, i) = aColumnas(i - 1)</pre>
<pre>' Formato
ExcelApp.Worksheets(nHoja).Cells(4, i).Font.Bold = True
ExcelApp.Worksheets(nHoja).Cells(4, i).Borders.Value = 7
ExcelApp.Worksheets(nHoja).Cells(4, i).Interior.Color = RGB(67, 214, 233)
ExcelApp.Worksheets(nHoja).Cells(4, i).HorizontalAlignment = 3
Next i

Return
End Sub

LINQ lambda adicionando vários filtros inside

Além de procurar o mesmo texto em todos os campos, temos um exemplo nesta instrução de como tratar caso trabalhe com campos possíveis NULL dentro da consulta.
Vide:
(!string.IsNullOrEmpty(f.CAMPOTAL)) && f.CAMPOTAL.ToUpper().Contains(texto)</pre>

OBS: Esse condição é necessária pois esse campo pode retornar NULL, e isso daria um Object Not Reference…


 ///
<summary>
 /// Efetua consulta Avaçada de Fornecedor
 /// </summary>

 /// <param name="fornecedor_">Fornecedor</param>
 /// <returns>Lista de Fornecedores</returns>
 public List<FornecedorVO> ConsultaAvancada(FornecedorVO fornecedor_, string texto)
 {
 string textoCPFCNPJ = Util.RemoverMascaraCNPJ(texto);
 string textoTel = Util.RemoverMascaraFoneDDD(texto);
 string textoData = Util.RemoverMascaraData(texto);
 return (from f in this.Context.FornecedorVOSet
 select f).ToList().Where(f => f.RazaoSocial.ToUpper().Contains(texto) ||
 f.CNPJ.Contains(textoCPFCNPJ) ||
 f.CPF.Contains(textoCPFCNPJ) ||
 f.Emissor.ToUpper().Contains(texto) ||
 f.InscricaoEstad.ToUpper().Contains(texto) ||
 f.Taxa.ToUpper().Contains(texto) ||
 f.NomeFantasia.ToUpper().Contains(texto) ||
 f.Endereco.ToUpper().Contains(texto) ||
 f.Complemento.ToUpper().Contains(texto) ||
 f.Bairro.ToUpper().Contains(texto) ||
(!string.IsNullOrEmpty(f.CampoAberto)) && f.CampoAberto.ToUpper().Contains(texto) ||
(!string.IsNullOrEmpty(f.PrazoPagamento)) && f.PrazoPagamento.ToUpper().Contains(texto) ||
 f.Estado.ToUpper().Contains(texto) ||
 f.CodIBGE.ToUpper().Contains(texto) ||
 f.CEP.Contains(texto) ||
 f.EmailRecebNF.ToUpper().Contains(texto) ||
 f.Email.ToUpper().Contains(texto) ||
 f.Contato.ToUpper().Contains(texto) ||
 f.Moeda.Contains(texto) ||
 f.MoedaQuant.Contains(texto) ||
 f.MatServTipoServ.ToUpper().Contains(texto) ||
 f.Agencia.Contains(texto) ||
 f.NumConta.Contains(texto) ||
 f.Observacoes.ToUpper().Contains(texto) ||
 f.UFAdvancingPrice.ToUpper().Contains(texto) ||
 f.CatCode30.Contains(texto) ||
 f.ClassficationBaggio.ToUpper().Contains(texto) ||
 f.CodCat.Contains(texto) ||
 f.ModProcessLote.ToUpper().Contains(texto) ||
 f.DataEmissao.HasValue && f.DataEmissao.Value.ToString("ddMMyyyy").Contains(textoData) ||
 f.Numero.HasValue && f.Numero.Value.ToString().Contains(texto) ||
 f.ComodityType.HasValue && f.ComodityType.Value.ToString().Contains(texto) ||
 f.NumCopOC.HasValue && f.NumCopOC.Value.ToString().Contains(texto) ||
 f.DecimaisQtd.HasValue && f.DecimaisQtd.Value.ToString().Contains(texto) ||
 f.DecimaisVal.HasValue && f.DecimaisVal.Value.ToString().Contains(texto) ||
 f.DDDFax.HasValue && f.DDDFax.Value.ToString().Contains(textoTel) ||
 f.DDDFone.HasValue && f.DDDFone.Value.ToString().Contains(textoTel) ||
 f.Telefone.HasValue && f.Telefone.Value.ToString().Contains(textoTel) ||
 f.FoneFax.HasValue && f.FoneFax.Value.ToString().Contains(textoTel)
 ).ToList();
 }