Используйте имя переменной для запроса таблицы в linq - PullRequest
0 голосов
/ 25 апреля 2018

Мне интересно, есть ли возможность запросить набор в дБ с помощью переменной в linq.

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

    public static string getTableName()
    {
        string tableName = string.Empty;
        var department= "Sales";

        using (var context = new ALLDBEntities())
        {
            tableName = (from x in context.PROCESS_MATRIX
                where x.AREA.Equals(product)
                select x.ENTITY).FirstOrDefault();
        }

        return tableName;
    }

Теперь у меня есть имя таблицы в виде строки, я хочу иметь возможность использовать это для написания запроса linq, но вместо использования alldbEntities.sales, яхочу использовать table.Причина этого в том, что мне нужно написать несколько запросов, чтобы сделать одно и то же, так как мне придется запрашивать разные таблицы.

Есть ли далеко, чтобы достичь этого?

    public List<sales> GetData(DateTime startDate, DateTime endDate)
    {
        var table = getTableName();

        this.startDate = startDate.AddDays(-1);
        this.endDate = endDate.AddDays(1);

        using (var alldbEntities = new ALLDBEntities())
        {
            salesinfo = alldbEntities.sales.Where(f => f.Date >= this.startDate && f.Date <= this.endDate).ToList();
        }

        return salesinfo;
    }

1 Ответ

0 голосов
/ 25 апреля 2018

Вот ваши: Скотт показывает, как использовать Dynamic LINQ

Что вы можете сделать:

Динамическое выражениеAPI вводится в область действия с помощью (импорта) пространства имен System.Linq.Dynamic.Ниже приведен пример применения API динамического выражения к источнику данных LINQ to SQL.

var query =
    db.Customers.
    Where("City = @0 and Orders.Count >= @1", "London", 10).
    OrderBy("CompanyName").
    Select("new(CompanyName as Name, Phone)");

Не забудьте попробовать innerIt и outerIt

Примеркак использовать externalIt

static void Main(string[] args)
{
    var claims = new List<Claim>();
    claims.Add(new Claim { Balance = 100, Tags = new List<string> { "Blah", "Blah Blah" } });
    claims.Add(new Claim { Balance = 500, Tags = new List<string> { "Dummy Tag", "Dummy tag 1" } });

    // tags to be searched for
    var tags = new List<string> { "New", "Blah" };
    var parameters = new List<object>();
    parameters.Add(tags);

    var query = claims.AsQueryable().Where("Tags.Any(@0.Contains(outerIt)) AND Balance > 100", parameters.ToArray());
}

public class Claim
{
    public decimal? Balance { get; set; }
    public List<string> Tags { get; set; }
}

Создание динамического запроса Linq с использованием outerIt

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