Как получить данные из динамической таблицы в MVC - PullRequest
1 голос
/ 12 июня 2019

Я пишу новый вызов API для моего приложения для Android, я хочу получить данные из динамической таблицы, я имею в виду, когда пользователь выбирает кнопку «A» из Andriod, я хочу получить данные из таблицы «A» и, если «B» Нажмите, чтобы получить данные из таблицы "B". Кто-то, помогите мне найти возможное решение.

Я хочу заменить на переменную для "JBCTNRITEMs" из сущностей. JBCTNRITEMs (имя таблицы)

    var query = (from jbct in entities.JBCTNRITEMs
                 where jbid.Contains(jbct.jbid.ToString()) && boxid.Contains(jbct.TrackingNo.ToString())
                 select jbct).ToArray();
    int id = 0;
    if (query.Length > 0)
    {
        id = (query[0].id);
    }
    return id;

Вот две различные возможности в качестве примера

if (module.ToLower() == "module-a") 
{
      var imageinfo = (from jb in entities.TableA.AsEnumerable() 
                       where scanID.Contains(jb.aid.ToString()) 
                       select jb).ToArray(); 
       InsertGENIMAGE(userID, scanID, FilePath, imageinfo, "AIMAGE"); 
}
else if (module.ToLower() == "module-b") 
{
    var imageinfo = (from jb in entities.TableB.AsEnumerable() 
                     where scanID.Contains(jb.bid.ToString()) 
                     select jb).ToArray(); 
    InsertGENIMAGE(userID, scanID, FilePath, imageinfo, "BIMAGE"); 
}

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Здесь query хранит то, что вы пытаетесь выбрать.Пока вы пытаетесь выбрать тот же тип или тот же анонимный тип, он будет работать.

Вот простой пример:

class Test1
{
     public int ID { get; set; }
     public string Name { get; set; }
}

class Test2
{
      public int ID { get; set; }
      public string Name { get; set; }
}

var test1Lst = new List<Test1>
{
      new Test1() { ID = 1, Name = "Jitendra" },
      new Test1() { ID = 2, Name = "Jahnavi" }
};

var test2Lst = new List<Test2>
{
      new Test2() { ID = 1, Name = "Aaditri" },
      new Test2() { ID = 2, Name = "Pankaj" }
};

var test = false;
var query = test ? (from t in test1Lst select new { ID = t.ID, Name = t.Name }) : (from t in test2Lst select new { ID = t.ID, Name = t.Name });

// Put whatever condition you want to put here   
query = query.Where(x => x.ID == 1);

foreach(var t1 in query)
{
      Console.WriteLine(t1.ID + " " + t1.Name);
}
0 голосов
/ 12 июня 2019

Полагаю, в этом случае я бы предложил использовать универсальный метод:

private T GetMeTheFirstEntry<T>(Expression<Func<T, bool>> filter) where T : class
{
    return entities.GetTable<T>().FirstOrDefault(filter);
}

GetTable позволит вам поменять местами tableA и tableB.Вы бы назвали это следующим образом:

TableA tableA_entity = GetMeTheFirstEntry<TableA>(jb => scanID.Contains(jb.aid.ToString()));
TableB tableB_entity = GetMeTheFirstEntry<TableB>(jb => scanID.Contains(jb.bid.ToString()));

Если фильтрация прошла успешно, найденный объект не будет нулевым, и вы можете использовать его:

int a_id = tableA_entity.aid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...