In questo specifico caso nato più che altro da una conversazione in una breve pausa, ho voluto fare una prova.
Creare un anonimo, valorizzando un campo con linq.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AnonymousTypes
{
class user
{
public int ID_User { get; set; }
public int ID_Role { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
class role
{
public int ID_Role { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<role> rs = new List<role>();
rs.Add(new role() { ID_Role = 1, Name = "Default", Description = "" });
rs.Add(new role() { ID_Role = 2, Name = "J.Dev", Description = "" });
rs.Add(new role() { ID_Role = 3, Name = "S.Dev", Description = "" });
List<user> us = new List<user>();
us.Add(new user() { ID_User = 1 ,ID_Role = 1, Name = "Fabio", Surname= "Arosio" });
us.Add(new user() { ID_User = 1, ID_Role = 2, Name = "Claudio", Surname = "Arosio" });
us.Add(new user() { ID_User = 1, ID_Role = 1, Name = "Lorenzo", Surname = "Arosio" });
var us_rs = from u in us
where u.ID_Role == 1
select new
{
User_Name = u.Name,
User_Surname = u.Surname,
Role = rs.FirstOrDefault(r => r.ID_Role == u.ID_Role).Name
};
foreach (var ur in us_rs)
{
Console.WriteLine(ur.Role + "\t" + ur.User_Name + " " + ur.User_Surname);
}
Console.ReadKey();
}
}
}
Abbandonando le considerazioni possibili sulle classi dati è decisamente interessante "fare qualche prova".
Nel caso specifico della valorizzazione del "Role" potrebbe essere interessante ottenere la stessa informazione tramite una "select" tuttavia il tipo restituito non è e non può essere un nativo.
Mai perdere il vizio ...
Nessun commento:
Posta un commento