gpt4 book ai didi

c# - 当 LINQ 查询的条件为 null 时,如何防止出现多个结果?

转载 作者:太空宇宙 更新时间:2023-11-03 10:23:17 26 4
gpt4 key购买 nike

假设有下面两个SQL表。

db.Fruits

ID  Name
F1 Apple
F2 Orange
F3 Melon

db.Attributes

ID  Fruits_ID   AttributeType   AttributeValue
A1 F1 Color Red
A2 F3 Size Large
A3 F2 Size Small
A4 F1 Size Small
A6 F3 Color Brown

如何使用 LINQ 查询在多个可为 null 的条件下搜索我想要的水果,而不用通过 JOIN 将结果相乘?例如,如果 condition 为 null,则以下查询会产生多个结果。

var q = from f in db.Fruits
join a in db.Attributes
on f.ID equals a.Fruits_ID
where string.IsNullOrEmpty(condition) || fa.AttributeValue.Contains(conditon)
select FruitResult
{
// ...
}

无论如何,我也研究过 INTO,但这对我不起作用。

var q = from f in db.Fruits
join a in db.Attributes
on f.ID equals a.Fruits_ID
into FruitsAttributes

from fa in FruitsAttributes
where string.IsNullOrEmpty(condition) || fa.AttributeValue.Contains(conditon)
select FruitResult
{
// ...
}

condition 为 null 或空时,上面的代码仍然返回多个/合并的结果。

TL;DR:如何在我的查询中使用一对多 .Contains 检查,以便在条件为 null 时返回单个“unjoined” “行?

最佳答案

你可以试试这个查询:

var q = from f in db.Fruits
join a in db.Attributes
on f.Id equals a.FruitId
into g
select new FruitResult
{
Id = f.Id,
Name = f.Name,
Attribute = condition != null ? g.FirstOrDefault(a => a.AttributeValue.Contains(condition)) : null
};

您可以轻松地在选择中扩展检索属性值,我不知道您需要什么,所以我保持原样。

关于c# - 当 LINQ 查询的条件为 null 时,如何防止出现多个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32579986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com