Внутреннее объединение с двумя предложениями выбора LinQ MVC - PullRequest
0 голосов
/ 02 июля 2018

Результат запроса из поиска

Привет, я новичок в использовании синтаксиса linq, и мне нужна помощь в переводе запроса на картинке, чтобы получить нужный результат в c #. У меня два вопроса. Прежде всего, как мне сделать внутренние объединения, используя синтаксис linq в c #, чтобы получить желаемый результат, показанный на изображении. Во-вторых, чтобы показать данные, полученные из запроса, мне нужно создать ViewModel, который имеет 3 ViewModel из разных таблиц, используемых в поиске запроса?

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 02 июля 2018

Как сказал levelonehuman, linq предназначен для запроса данных. Допустим, у вас есть пара классов:

public class Person
{

    public static class Factory
    {
        private static int currentId = 0;
        public static Person Create(string firstName, string lastName, string phoneNumber, int companyId)
        {
            return new Person()
            {
                Id = ++currentId,
                FirstName = firstName,
                LastName = lastName,
                PhoneNumber = phoneNumber,
                CompanyId = companyId
            };
        }
    }

    public int Id { get; private set; }

    public string FirstName { get; private set; }

    public string LastName { get; private set; }

    public string PhoneNumber { get; private set; }

    public int CompanyId { get; private set; }
}

public class Company
{
    public static class Factory
    {
        private static int companyId=0;
        public static Company Create(string name, string city, string state, string phoneNumber)
        {
            return new Company()
            {
                Id = ++ companyId,
                City = city,
                State = state,
                Name = name,
                PhoneNumber = phoneNumber
            };
        }
    }

    public int Id { get; set; }

    public string Name { get; set; }

    public string City { get; set; }

    public string State { get; set; }

    public string PhoneNumber { get; set; }
}

и затем вы хотите видеть только людей с определенным кодом города, вы можете сделать что-то вроде этого:

class Program
{
    static void Main(string[] args)
    {
        var companies = new[]
        {
            Company.Factory.Create("ABC", "Indianapolis", "In", "(317) 333 5555"),
            Company.Factory.Create("Def", "Bloominton", "In", "(812) 333 5555"),
        };

        var people = new[]
        {
            Person.Factory.Create("Jane", "Doe", "(317) 555 7565", 1),
            Person.Factory.Create("Paul", "Smith", "(812) 555 7565", 2),
            Person.Factory.Create("Sean", "Jackson", "(317) 555 7565", 2),
            Person.Factory.Create("Jenny", "Gump", "(812) 555 7565", 1)
        };

        var peopleFromIndianapolis =
        (
            from company in companies
            join person in people on company.Id equals person.CompanyId

            where person.PhoneNumber.StartsWith("(317)")
            orderby person.LastName, person.FirstName
            select new
            {
                person.FirstName,
                person.LastName,
                company.Name
            }
        ).ToList();

        foreach (var person in peopleFromIndianapolis)
        {
            Console.WriteLine($"PersonName: {person.LastName}, {person.FirstName} - Company:{person.Name}");
        }

    }

}

Надеюсь, это поможет!

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