将sql查询返回的列表存储在MVC中的模型中
本文关键字:模型 MVC 存储 列表 sql 查询 返回 | 更新日期: 2023-09-27 18:10:42
下面的代码返回大约2000项数据的列表。我想将其返回到model
并将其传递回view
。
var clientData = db.Clients.Where(x => x.Firm == firm).ToList();
List<ClientEmployees> clientEmployees = new List<ClientEmployees>();
foreach(var client in clientData)
{
//store in the in the clientEmployees list
}
然而,我真的不想通过1000行的数据来存储它们到列表中。我需要在以后操纵这些数据,这就是为什么我认为使用model
是好的,我可以稍后操纵。有什么更好的办法吗?
如果没有一堆字段你可以直接选择List
var clientEmployees = db.Clients.Where(x => x.Firm == firm)
.Select(a => new ClientEmployees {
Id = a.Id,
Name = a.Name,
etc..
})
.ToList();
如果有很多字段,可能值得研究AutoMapper或类似的东西。
。Select也可以是Func<>所以你可以在视图模型
中这样做public class ClientEmployees
{
public int Id { get; set; }
public string Name { get; set; }
public static Func<Client, ClientEmployees> FromEntity = item => new ClientEmployees()
{
Id = item.Id,
Name = item.Name,
//map all fields
};
}
那么当你从db上下文中选择时,你只需要使用。
var clientEmployees = db.Clients.Where(x => x.Firm == firm)
.Select(ClientEmployees.FromEntity)
.ToList();
试试下面的代码。List包含到原始数据表的链接,因此您不会复制数据并使用更多内存。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace ConsoleApplication45
{
class Program
{
static void Main(string[] args)
{
string connStr = "Enter Your connection strin gHere";
string SQL = "Enter your SQL Here";
SqlDataAdapter adapter = new SqlDataAdapter(SQL, connStr);
DataTable dt = new DataTable();
adapter.Fill(dt);
string firm = "abc";
List<DataRow> clientData = dt.AsEnumerable().Where(x => x.Field<string>("firm") == firm).ToList();
}
}
}