Hinsura
1/16/2018 - 2:44 PM

Arrays, Lists, Dictionaries, Pocos

/* pass the generic type as shown below */
Product modelFromDb = await _productManager.GetProductFirstOrDefault(productViewModel.Id);
var modelFromDbDict = ConvertModelClassToDictionary<Product>(modelFromDb);

/* if the model object is null, instantiate a null version of the Product type being passed  */
public static Dictionary<string, object> ConvertModelClassToDictionary<T>(object model)
{
  if (ReferenceEquals(null, model))
  {
    model = (T)Activator.CreateInstance(typeof(T), new object[] {});
  }
}

/******************************************************************************/

/* setting generic type's property value using reflection */
/* in this example; EmailApiResponse.ServerStatusCode is set to BadRequest */

public class EmailApiResponse {
  
  public HttpStatusCode ServerStatusCode { get; set; }
  
}

await PostToApiAsJson<EmailApiResponse>();

public static async Task<T> PostToApiAsJson<T>() {
  
  /* create an instance of the EmailApiResponse object  */
  var returnObj = (T)Activator.CreateInstance(typeof(T), new object[] { });
  
  /* set its ServerStatusCode property value */
  var serverStatusCode = typeof(T).GetProperty("ServerStatusCode");/* property name */
    if (serverStatusCode != null)
        serverStatusCode.SetValue(returnObj, HttpStatusCode.BadRequest, null);
        
}
for (int i = 0; i < Model.Insureds.Count; i++)
{
  var viewDataDict = new ViewDataDictionary
  {
    new KeyValuePair<string, object>("Prefix", "Insureds[" + i + "]"),
    new KeyValuePair<string, object>("EndorsementType", Model.EndorsementType.ToString()),
    new KeyValuePair<string, object>("InsuredId", Model.Insureds[i].Id)
  };
  @Html.Partial("_Insured", Model.Insureds[i], viewDataDict)
}
// Create a list of parts.
var parts = new List<Part>();
 
// Add parts to the list.
parts.Add(new Part() { PartName = "crank arm", PartId = 1234 });
parts.Add(new Part() { PartName = "chain ring", PartId = 1334 });

/*********************************************/

// Anonymous Type Lists
var modelType = typeof(SearchPolicyViewModel);
var modelData = ModelMetadataProviders.Current.GetMetadataForType(null, modelType);
    
var placeholders = new List<dynamic>();
foreach (var p in modelData.Properties)
{
  placeholders.Add(new { PropertyName = p.PropertyName, Placeholder = p.Watermark });
}

// Property name'i "SubeKod" olan list item'dan Placeholder degerini al.
var placeholder = placeholders.First(x => x.PropertyName == "SubeKod").Placeholder;

/* -- OR -- */
var factors = new List<dynamic> {new {Value = "", Text = ""}};

/*********************************************/

// Select columns from lists
var list = (await _store.GetAllPermissions()).Select(r =>
  {
      return
          new
          {
              id = r.Id.ToString(),
              text = r.Title,
              parent = !r.ParentId.HasValue ? "#" : r.ParentId.ToString(),
              state = new {selected = rolePermissions != null && rolePermissions.Any(rp => rp.Name.Equals(r.RecursiveName))},
              a_attr = new {showMenu = r.ShowMenu},
              icon = r.ShowMenu ? "" : "../assets/global/img/jstree-key.png"
          };
  });
  
/*********************************************/

// Convert list to comma separated string
  
Console.WriteLine(String.Join(",", new List<uint> { 1, 2, 3, 4, 5 }));

/*********************************************/

// Convert list to queryable
var authList = new List<Auth>();
var q = authList.AsQueryable();
q = q.Where(e => e.RunInNewOffer);

/*********************************************/

// Modify anonymous list
var q = from cf in _productManager.GetAllCapFactors()
          join p in _productManager.GetAllProduct()
            on cf.ProductId equals p.Id
          join f in _productManager.GetAllFactors()
            on cf.FactorId equals f.Id
          select new
          {
            cf.Id,
            cf.FactorId,
            cf.ProductId,
            cf.CapUsage
          };

var capFactorQList = await q.ToListAsync();

var capFactorList = from cf in capFactorQList
select new
{
    cf.Id,
    ProductName = cf.ProductId + " - " + cf.ProductName,
    FactorName = cf.FactorId + " - " + cf.FactorName,
    CapUsageName = EnumHelper<CapUsageTypeEnum>.GetEnumDescription(cf.CapUsage)
};

/*********************************************/

// Get the Count of a List of unknown type
var selectData = from f in await GetAllFactorsList()
                   join pcf in distinctProductCoverageFactorsList
                      on f.Id equals pcf.FactorId
                   select new { f.Id, Text = f.DisplayName };

var selectDatalist = selectData.OrderBy(x => x.Id).ToList();
var selectDataIList = (IList) selectData;

if (selectDataIList != null && selectDataIList.Count > 0)
{
  resultDict = new Dictionary<string, object>
  {
    { "success", true },
    { "data", selectDatalist }
  };
}

/*********************************************/
var item = new KeyValueItem
{
  Foo = "Bee",
  Abc = "Scoo"
};
return Json(item);
var resultDict = new Dictionary<string, object>
{
  { "type", "error" },
  { "text", $"{rowIndex} nolu satırdaki kayıtta hata oluştu : {e.Message}" }
};
return Json(resultDict);

/* -- OR -- */

var resultDict = new Dictionary<string, string>();
resultDict.Add("Foo", "TTTDic");
resultDict.Add("Bar", "Scoo");
return Json(resultDict);

/*get value by key  */
String foo = Data_Array["Foo"];

/* Does it contain a key? */
if (resultDict.ContainsKey("Bar")) {
  
}

/* -------------------- */
/* LIST to DICTIONARY  */
var lookUpsDictionary = lookUpsList.ToDictionary(li => li.Id, li => li.Description);

/* -------------------- */
/* DICTIONARY to JSON   */
var lookUpsJson = JsonConvert.SerializeObject(lookUpsDictionary, Formatting.None);