بله. خاصیت مورد نظر را به صورت byte array تعریف کنید:
public class Image { public int Id { get; set; } public byte[] Data { get; set; } }
public class Image { public int Id { get; set; } public byte[] Data { get; set; } }
public static void PrintNumbers() { var numbers = new[] { 1,2,3,5,7,90 }; // from a data source foreach(var item in numbers) { Console.WriteLine(item); } }
public static void PrintNumbers(Func<int,string> formula) { var numbers = new[] { 1,2,3,5,7,90 }; // from a data source foreach(var item in numbers) { var data = formula(item); Console.WriteLine(data); } }
PrintNumbers(number => string.Format("{0:n0}",number));
PrintNumbers((number) =>{ return string.Format("{0:n0}",number); });
using System; using System.Web; using System.Web.Caching; using System.Collections.Generic; namespace WebToolkit { public static class CacheManager { public static void CacheInsert(this HttpContextBase httpContext, string key, object data, int durationMinutes) { if (data == null) return; httpContext.Cache.Add( key, data, null, DateTime.Now.AddMinutes(durationMinutes), TimeSpan.Zero, CacheItemPriority.AboveNormal, null); } } }
var item = httpContext.Cache[key]; if (item == null) { item = ReadDataFromDataSource(); if (item == null) return null; CacheInsert(httpContext, key, item, durationMinutes); }
using System; using System.Web; using System.Web.Caching; using System.Collections.Generic; namespace WebToolkit { public static class CacheManager { public static void CacheInsert(this HttpContextBase httpContext, string key, object data, int durationMinutes) { if (data == null) return; httpContext.Cache.Add( key, data, null, DateTime.Now.AddMinutes(durationMinutes), TimeSpan.Zero, CacheItemPriority.AboveNormal, null); } public static T CacheRead<T>(this HttpContextBase httpContext, string key, int durationMinutes, Func<T> ifNullRetrievalMethod) { var item = httpContext.Cache[key]; if (item == null) { item = ifNullRetrievalMethod(); if (item == null) return default(T); CacheInsert(httpContext, key, item, durationMinutes); } return (T)item; } } }
var user = HttpContext.CacheRead( "Key1", 15, () => _usersService.FindUser(userId));
using System.ComponentModel; namespace PdfReportSamples.Models { public enum JobTitle { [Description("Grunt")] Grunt, [Description("Programmer")] Programmer, [Description("Analyst Programmer")] AnalystProgrammer, [Description("Project Manager")] ProjectManager, [Description("Chief Information Officer")] ChiefInformationOfficer, } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using PdfReportSamples.Models; using PdfRpt.Aggregates.Numbers; using PdfRpt.ColumnsItemsTemplates; using PdfRpt.Core.Contracts; using PdfRpt.Core.Helper; using PdfRpt.DataAnnotations; namespace PdfReportSamples.DataAnnotations { public class Person { [IsVisible(false)] public int Id { get; set; } [DisplayName("User name")] //Note: If you don't specify the ColumnItemsTemplate, a new TextBlockField() will be used automatically. [ColumnItemsTemplate(typeof(TextBlockField))] public string Name { get; set; } [DisplayName("Job title")] public JobTitle JobTitle { set; get; } [DisplayName("Date of birth")] [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] public DateTime DateOfBirth { get; set; } [DisplayName("Date of death")] [DisplayFormat(NullDisplayText = "-", DataFormatString = "{0:MM/dd/yyyy}")] public DateTime? DateOfDeath { get; set; } [DisplayFormat(DataFormatString = "{0:n0}")] [CustomAggregateFunction(typeof(Sum))] public int Salary { get; set; } [IsCalculatedField(true)] [DisplayName("Calculated Field")] [DisplayFormat(DataFormatString = "{0:n0}")] [AggregateFunction(AggregateFunction.Sum)] public string CalculatedField { get; set; } [CalculatedFieldFormula("CalculatedField")] public static Func<IList<CellData>, object> CalculatedFieldFormula = list => { if (list == null) return string.Empty; var salary = (int)list.GetValueOf<Person>(x => x.Salary); return salary * 0.8; };//Note: It's a static field, not a property. } }
using System; using System.Collections.Generic; using PdfReportSamples.Models; namespace PdfReportSamples.DataAnnotations { public static class PersonnelDataSource { public static IList<Person> CreatePersonnelList() { return new List<Person> { new Person { Id = 1, Name = "Edward", DateOfBirth = new DateTime(1900, 1, 1), DateOfDeath = new DateTime(1990, 10, 15), JobTitle = JobTitle.ChiefInformationOfficer, Salary = 5000 }, new Person { Id = 2, Name = "Margaret", DateOfBirth = new DateTime(1950, 2, 9), DateOfDeath = null, JobTitle = JobTitle.AnalystProgrammer, Salary = 4000 }, new Person { Id = 3, Name = "Grant", DateOfBirth = new DateTime(1975, 6, 13), DateOfDeath = null, JobTitle = JobTitle.Programmer, Salary = 3500 } }; } } }
using System; using PdfRpt.Core.Contracts; using PdfRpt.FluentInterface; namespace PdfReportSamples.DataAnnotations { public class DataAnnotationsPdfReport { public IPdfReportData CreatePdfReport() { return new PdfReport().DocumentPreferences(doc => { doc.RunDirection(PdfRunDirection.LeftToRight); doc.Orientation(PageOrientation.Portrait); doc.PageSize(PdfPageSize.A4); doc.DocumentMetadata(new DocumentMetadata { Author = "Vahid", Application = "PdfRpt", Keywords = "Test", Subject = "Test Rpt", Title = "Test" }); }) .DefaultFonts(fonts => { fonts.Path(Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\tahoma.ttf", Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\verdana.ttf"); }) .PagesFooter(footer => { footer.DefaultFooter(printDate: DateTime.Now.ToString("MM/dd/yyyy")); }) .PagesHeader(header => { header.DefaultHeader(defaultHeader => { defaultHeader.ImagePath(AppPath.ApplicationPath + "\\Images\\01.png"); defaultHeader.Message("new rpt."); defaultHeader.RunDirection(PdfRunDirection.LeftToRight); }); }) .MainTableTemplate(template => { template.BasicTemplate(BasicTemplate.ClassicTemplate); }) .MainTablePreferences(table => { table.ColumnsWidthsType(TableColumnWidthType.FitToContent); }) .MainTableDataSource(dataSource => { dataSource.StronglyTypedList(PersonnelDataSource.CreatePersonnelList()); }) .MainTableEvents(events => { events.DataSourceIsEmpty(message: "There is no data available to display."); }) .MainTableSummarySettings(summary => { summary.OverallSummarySettings("Total"); summary.PageSummarySettings("Page Summary"); summary.PreviousPageSummarySettings("Pervious Page Summary"); }) .MainTableAdHocColumnsConventions(adHocColumns => { adHocColumns.ShowRowNumberColumn(true); adHocColumns.RowNumberColumnCaption("#"); }) .Export(export => { export.ToExcel(); export.ToXml(); }) .Generate(data => data.AsPdfFile(AppPath.ApplicationPath + "\\Pdf\\DataAnnotationsSampleRpt.pdf")); } } }
var numbers = new List<int> { -7, 1, 5, -6 };
var sortedNumbers1 = numbers.OrderBy(n => n); var sortedNumbers2 = numbers.OrderByDescending(n => n);
public static IOrderedEnumerable<TSource> OrderBy<TSource,TKey>( [NotNull] this IEnumerable<TSource> source, [NotNull] Func<TSource,TKey> keySelector)
var sortedNumbers3 = numbers.Order(); var sortedNumbers4 = numbers.OrderDescending();
public static IOrderedEnumerable<T> Order<T>(this IEnumerable<T> source) public static IOrderedEnumerable<T> OrderDescending<T>(this IEnumerable<T> source)
public class User { public string Name { set; get; } public int Age { set; get; } }
List<User> users = new() { new User { Name = "User 1", Age = 34 }, new User { Name = "User 2", Age = 24 }, };
var orderedUsers = users.Order();
public class User : IComparable<User> { public string Name { set; get; } public int Age { set; get; } public int CompareTo(User? other) { if (ReferenceEquals(this, other)) { return 0; } if (ReferenceEquals(null, other)) { return 1; } var nameComparison = string.Compare(Name, other.Name, StringComparison.Ordinal); if (nameComparison != 0) { return nameComparison; } return Age.CompareTo(other.Age); } }
var orderedUsers2 = users.OrderBy(user => user.Name).ThenBy(user => user.Age);
public static class ServiceCollectionExtensions { public static IServiceCollection Remove<T>(this IServiceCollection services) { var serviceDescriptor = services.FirstOrDefault(descriptor => descriptor.ServiceType == typeof(T)); if (serviceDescriptor != null) services.Remove(serviceDescriptor); return services; } }
using System.DomainClasses; using System.Service.ViwModels; namespace System.Web.App_Start { public static class AutomapperConfig { public class TestProfile : AutoMapper.Profile { public TestProfile() { CreateMap<Contact, ContactViewModel>(); CreateMap<Address, AddressViwModel>(); } } } }
var res = _mapper.Map<Contact,ContactViewModel>(contact); {"Missing type map configuration or unsupported mapping.\r\n\r\nMapping types:\r\nContact -> ContactViewModel\r\nSystem.DomainClasses.Contact -> System.Web.ViewModels.ContactViewModel"}
var res = _mapper.Map<System.DomainClasses.Contact, System.Service.ViwModels.ContactViewModel>(contact);
<div> @(Html.Kendo().TreeView() .Name("treeview") .TemplateId("treeview-template") .HtmlAttributes(new { @class = "demo-section" }) .DragAndDrop(true) .BindTo(Model.Where(e=>e.ParentFolderID==null).OrderBy(e=>e.Order), mappings => { mappings.For<DAL.Folder>(binding => binding .ItemDataBound((item, folder) => { item.Text = folder.FolderName; item.SpriteCssClasses = "folder"; item.Expanded=true; item.Id = folder.FolderID.ToString(); }) .Children(folder => folder.Folder1)); mappings.For<DAL.Folder>(binding => binding .ItemDataBound((item, folder) => { item.Text = folder.FolderName; item.SpriteCssClasses = " folder"; item.Expanded = true; item.Id = folder.FolderID.ToString(); })); }) ) </div>
<style type="text/css" scoped> .demo-section { width: 200px; } #treeview .k-sprite ,#treeview2 .k-sprite { background-image: url("@Url.Content("/Content/kendo/images/coloricons-sprite.png")"); } .rootfolder { background-position: 0 0; } .folder { background-position: 0 -16px; } .pdf { background-position: 0 -32px; } .html { background-position: 0 -48px; } .image { background-position: 0 -64px; } .delete-link,.edit-link { width: 12px; height: 12px; overflow: hidden; display: inline-block; vertical-align: top; margin: 2px 0 0 3px; -webkit-border-radius: 5px; -mox-border-radius: 5px; border-radius: 5px; } .delete-link{ background: transparent url("@Url.Content("/Content/kendo/images/close.png")") no-repeat 50% 50%; } .edit-link{ background: transparent url("@Url.Content("/Content/kendo/images/edit.png")") no-repeat 50% 50%; } </style>
<a href="#" id="serialize">ذخیره</a>
$('#serialize').click(function () { serialized = serialize(); window.location.href = "Folder/SaveMenu?serial=" + serialized + "!"; }); function serialize() { var tree = $("#treeview").data("kendoTreeView"); var json = treeToJson(tree.dataSource.view()); return JSON.stringify(json); } function treeToJson(nodes) { return $.map(nodes, function (n, i) { var result = { id: n.id}; //var result = { text: n.text, id: n.id, expanded: n.expanded, checked: n.checked }; if (n.hasChildren) result.items = treeToJson(n.children.view()); return result; }); }
var tree = $("#treeview").data("kendoTreeView"); var json = treeToJson(tree.dataSource.view());
var result = { id: n.id}; //var result = { text: n.text, id: n.id, expanded: n.expanded, checked: n.checked }; if (n.hasChildren) result.items = treeToJson(n.children.view());
return JSON.stringify(json);
window.location.href = "Folder/SaveMenu?serial=" + serialized + "!";
"[{\"id\":\"2\"},{\"id\":\"5\",\"items\":[{\"id\":\"3\"},{\"id\":\"6\"},{\"id\":\"7\"}]}]!"
همانطور که میبینید گره دوم که "پوشه چهارم45" نام دارد شامل سه فرزند است که در رشته داده شده با عنوان item شناخته شده است. حال باید این رشته با برنامه نویسی سی شارپ جداسازی کرد :
string serialized; Dictionary<int, int> numbers = new Dictionary<int, int>();
public ActionResult SaveMenu(string serial) { var newfolders = new List<Folder>(); serialized = serial; calculte_serialized(0); return RedirectToAction("Index"); }
void calculte_serialized(int parent) { while (serialized.Length > 0) { var id_index=serialized.IndexOf("id"); if (id_index == -1) { return; } serialized = serialized.Substring(id_index + 5); var quote_index = serialized.IndexOf("\""); var id=serialized.Substring(0, quote_index); numbers.Add(int.Parse(id), parent); serialized = serialized.Substring(quote_index); var condition = serialized.Substring(0,3); switch (condition) { case "\"},": break; case "\",\"": calculte_serialized(int.Parse(id)); break; case "\"}]": return; break; default: break; } } }
calculte_serialized با گرفتن 0 کار خود را شروع میکند یعنی از گره هایی که پدر ندارند و تمام idها را همراه با پدرشان در یک دیکشنری میریزد و هرکجا که به فرزندی برخورد به صورت بازگشتی فراخوانی میشود. پس از اجرای کامل آن ما درخت را در یک دیکشنری به صورت عنصرهای مجزا در اختیار داریم که میتوانیم در پایگاه داده ذخیره کنیم.
static void PassByValueSample() { int a = 1; PassByValue(a); Console.WriteLine($"after the invocation of {nameof(PassByValue)}, {nameof(a)} = {a}"); } static void PassByValue(int x) { x = 2; }
static void PassByReferenceSample() { int a = 1; PassByReference(ref a); Console.WriteLine($"after the invocation of {nameof(PassByReference)}, {nameof(a)} = {a}"); } static void PassByReference(ref int x) { x = 2; }
static void OutSample() { Out(out int a); Console.WriteLine($"after the invocation of {nameof(Out)}, {nameof(a)} = {a}"); } static void Out(out int x) { x = 2; }
if (int.TryParse("42", out var result)) { Console.WriteLine($"the result is {result}"); }
int x = 3; ref int x1 = ref x; x1 = 2; Console.WriteLine($"local variable {nameof(x)} after the change: {x}");
ref int i = sequence.Count();
ref int number1 = null; // ERROR ref int number2 = 42; // ERROR
static ref int ReturnByReference() { int[] arr = { 1 }; ref int x = ref arr[0]; return ref x; }
static ref int ReturnByReference2() { int[] arr = { 1 }; return ref arr[0]; }
static ref int ReturnByReference3(ref int x) { x = 2; return ref x; }
class Thing1 { ref string _Text1; /* Error */ ref string Text2 { get; set; } /* Error */ string _text = "Text"; ref string Text3 { get { return ref _text; } } // Properties that return a reference are allowed }
private MyBigStruct[] array = new MyBigStruct[10]; private int current; public ref MyBigStruct GetCurrentItem() { return ref array[current]; }
/// <summary> /// Validate IR National Code /// </summary> /// <param name="nationalcode">National Code</param> /// <param name="lastNumber">Last Number Of National Code</param> /// <returns></returns> public static bool IsValidNationalCode(this string nationalcode, out int lastNumber) { lastNumber = -1; if (!nationalcode.IsItNumber()) return false; var invalid = new[] { "0000000000", "1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999" }; if (invalid.Contains(nationalcode)) return false; var array = nationalcode.ToCharArray(); if (array.Length != 10) return false; var j = 10; var sum = 0; for (var i = 0; i < array.Length - 1; i++) { sum += Int32.Parse(array[i].ToString(CultureInfo.InvariantCulture)) * j; j--; } var diff = sum % 11; if (diff < 2) { lastNumber = diff; return diff == Int32.Parse(array[9].ToString(CultureInfo.InvariantCulture)); } var temp = Math.Abs(diff - 11); lastNumber = temp; return temp == Int32.Parse(array[9].ToString(CultureInfo.InvariantCulture)); }