Member 12183079 Ответов: 1

Как сгенерировать серийный номер в работе с использованием фрейма сущности


я хочу знать, как генерировать серийный номер без использования работы фрейма сущности-
public ActionResult AssistanceSchemeView()
        {
            List<cmsmobapp> obj = new List<cmsmobapp>();  
          int SNo=0;       
            var std = (from sa in Entities.MBL_MAST_ASST_SCHEME
                       join
                           saa in Entities.MBL_MAST_SchemeHead on (sa.Scheme_head_id) equals (saa.Scheme_Head_Id)
                       join la in Entities.MBL_MAST_LANGUAGE on sa.Lang_id equals la.Lang_id  
                       join ms in Entities.MBL_MAST_STATUS on sa.Status equals ms.Status
                        
                       select new
                       {
                          SNo++
                           sa.Scheme_Name,
                           sa.Scheme_id,
                           ms.StatusName,
                           sa
                           .Description,
                           sa.File_name,
                           saa.SchemeHead_Name,
                           sa.Lang_id,
                           la.LanguageName,
                           sa.Scheme_head_id,
                           sa.Status,
                           sa.Valid_from,
                           sa.Valid_to
                       }).ToList();            
            foreach (var p in std)
            {


                CMSMobApp edtprod = new CMSMobApp();

                edtprod.Scheme_Name = p.Scheme_Name;
                edtprod.Scheme_id = p.Scheme_id;
                edtprod.StatusName =  p.StatusName;
                edtprod.Lang_id = p.Lang_id;
                edtprod.Scheme_head_id = p.Scheme_head_id;
                edtprod.Status = p.Status;
                edtprod.Valid_from = p.Valid_from;
                edtprod.Valid_to = p.Valid_to;
                edtprod.Description = p.Description;
                edtprod.File_name = p.File_name;
                ViewBag.SchemeHead_Name = p.SchemeHead_Name;             
                obj.Add(edtprod);

            }
        

            return View("~/Views/Mob_App/AssistanceSchemeView.cshtml", obj.ToList());
        }


Что я уже пробовал:

инкремент ы без использования работы фрейма сущности

David_Wimbley

Все ли ваши попытки сделать инкремент переменной SNo на 1? Просто сделайте это внутри вашего цикла foreach под вашим запросом linq.

1 Ответов

Рейтинг:
0

Maciej Los

Я бы посоветовал проверить эту тему: c# - Как генерировать и автоматически увеличивать идентификатор с помощью Entity Framework - переполнение стека[^] и это: Автоматическое увеличение (Identity) не работает в Entity Framework | The ASP.NET форумы[^]

Вывод: Автоинкрементная ручка серийного номера самостоятельно-очень плохая идея по нескольким причинам! Это должно быть сделано на уровне базы данных (сущности).

Но если вы хотите знать, как создать значение, которое будет увеличиваться внутри запроса Linq, проверьте это:

//lambda version
var result = Enumerable.Range(5,20)
	.Select((x,y) => new
	{
		index = y+1,
		value = x
	})
	.ToList();

//normal version
int index = 1;
var result2 = (from a in Enumerable.Range(5,20)
	select new
	{
		index = index++,
		value = a
	})
	.ToList();


Оба производят тот же результат:
index value
1     5 
2     6 
3     7 
... 
20    24