2015-07-05 2 views
0

Мне нужно создать идентичные идентификаторы для 2 объектов для каждого цикла. Нужно ли мне делать еще один цикл для идентификаторов? В то время не будет создано более 20 объектов, поэтому беспокоиться о столкновениях не вызывает большого беспокойства. ничто не сохраняется в базе данных.как сгенерировать уникальный идентификатор для 2 объектов

мне нужно генерировать соответствующий идентификатор пользователя для productsId и Id

public class data 
{ 
    public int productsId { get; set; } 
    public string sqft { get; set; } 
    public string price { get; set; } 

} 
public class products 
{ 
    public int Id { get; set; } 
    public string product { get; set; } 

} 
public class LegendModel 
{ 
    public string Color { get; set; } 
    public string Name { get; set; } 
    public IList<data> Data { get; set; } 
    public IList<products> Products { get; set; } 
} 

public class ExportLegendController : ApiController 
{ 

    // POST: api/ExportLegend 
    [HttpPost] 
    public PDF Post([FromBody]List<LegendModel> legendModel) 
    { 
     try 
     { 
      var subjectProperty = legendModel[legendModel.Count - 1]; 

      var xEleLegend = new XElement("Legend", 
         from item in legendModel 
         select new XElement("item", 
            new XElement("Name", item.Name), 
            new XElement("Color", item.Color) 
            )); 



      // Save the document... 
      var dt = DateTime.Now.ToString("g").Replace('/', '-').Replace(':', '-'); 
      var filename = string.Format("{0}-{1}.xml", "Legend", dt); 
      string physicalPath = HttpContext.Current.Server.MapPath("/legendXmls"); 
      string relativePath = Path.Combine(physicalPath, filename).Replace("\\", "/"); 
      var pdfName = relativePath; 

      xEleLegend.Save(pdfName); 

      var data = new List<data>(); 
      var products = new List<products>(); 

      foreach (var item in subjectProperty.Data) 
      { 
       data.Add(new data 
       { 
        productsId = item.productsId, 
        sqft = item.sqft, 
        price = item.price 
       }); 
      } 
      foreach (var item in subjectProperty.Products) 
      { 
       products.Add(new products 
       { 
        Id = item.Id, 
        product = item.product 
       }); 
      }; 

      var xEleProperty = new XElement("Property", 
         from d in data 
         join product in products on d.productsId equals product.Id 
         select new XElement("Points", 
             new XElement("Sqft", d.sqft), 
             new XElement("Price", d.price), 
             new XElement("Product", product.product) 
            )); 
+0

не уверен, что я понимаю комментарий. если я не понимаю свой вопрос, тогда задайте вопрос – texas697

+1

Можете ли вы привести пример того, что вы пытаетесь выполнить? «Уникальный» означает «единственный в своем роде» и, по-видимому, исключает назначение двух объектов. –

+0

Используйте 'Guid' https://msdn.microsoft.com/en-us/library/system.guid.newguid(v=vs.110).aspx – Avijit

ответ

1

Уникальное поколение ID с помощью GUID и криптография

Использование GUID:

public string generateID() 
{ 
    return Guid.NewGuid().ToString("N"); 
} 

"N" - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (32 цифры)

or

using System.Security.Cryptography; // Import this Dll 
public string Get8Digits() 
{ 
    var bytes = new byte[4]; 
    var rng = RandomNumberGenerator.Create(); 
    rng.GetBytes(bytes); 
    uint random = BitConverter.ToUInt32(bytes, 0) % 100000000; 
    return String.Format("{0:D8}", random); 
} 
+0

Простите мое невежество, как я использую первый. – texas697

+0

@ texas697 Вы вызываете 'generateID()'. – cubrr

Смежные вопросы