使用 LINQ to SQL 时如何指定/筛选应填充哪些表列?

发布于 2025-01-07 03:12:50 字数 242 浏览 1 评论 0原文

我正在使用 LINQ to SQL,并有一个名为 Product 的数据库表,包含 20 列。 Product 表映射到 LINQ to SQL 元数据中的 Product 类。

我想使用 dbContext 并检索一些产品记录,但只填充 10 列,而不是全部 20 列。

如何指定应使用 LINQ to SQL(或 EF)返回/填充哪些列?

我知道一种方法是使用存储过程,但这就是这个问题的目的。

谢谢,

I'm using LINQ to SQL and have a database table called Product with 20 columns. The Product table is mapped to the Product class in the LINQ to SQL metadata.

I'd like to use my dbContext and retrieve some product records but only populating 10 columns not all 20 columns.

How would that be possible to specify which columns should be returned/populated with LINQ to SQL (or EF)?

I know one way would be using stored procedures but that's this question is about.

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

被你宠の有点坏 2025-01-14 03:12:50

您通常为此使用匿名类:

db.Products.Where(... filter ...).Select(item => new 
{
   Field1 = item.Field1,
   Field2 = item.Field2,
});

只有您包含的字段才会被选择。如果您打算将此数据结构传递给其他函数或返回它,则需要子字段集的具体类定义,例如:

class SmallerEntity
{
    public something Field1;
    public something Field2;
}

并且您可以在 Select 语句中初始化它:

db.Products.Where(... filter ...).Select(item => new SmallerEntity
{
   Field1 = item.Field1,
   Field2 = item.Field2,
});

我不建议半填充的做法一个现有的类。这会使您的状态空间变得不必要的复杂,并导致代码中出现更多错误。尝试在自己的类中包含较小的数据子集。

You usually use an anonymous class for that:

db.Products.Where(... filter ...).Select(item => new 
{
   Field1 = item.Field1,
   Field2 = item.Field2,
});

Only the fields you include will be selected. If you intend to pass this data structure to other functions or return it, you need a concrete class definition for sub field set, such as:

class SmallerEntity
{
    public something Field1;
    public something Field2;
}

And you can initialize this in your Select statement:

db.Products.Where(... filter ...).Select(item => new SmallerEntity
{
   Field1 = item.Field1,
   Field2 = item.Field2,
});

I don't recommend the practice of half-populating an existing class. That makes your state space unnecessarily complex and allows more bugs in your code. Try to contain smaller subsets of data in their own classes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文