gpt4 book ai didi

c# - LINQ 查询中的三元运算符

转载 作者:行者123 更新时间:2023-11-30 22:24:47 24 4
gpt4 key购买 nike

我有一个 LINQ 查询,我需要对其使用三元运算符,以便根据特定条件使用某些连接。所以这是我的查询。

var lData = (from r in gServiceContext.CreateQuery("campaignresponse")
join a in gServiceContext.CreateQuery("activityparty") on ((EntityReference)r["activityid"]).Id equals ((EntityReference)a["activityid"]).Id

//tenary statement here
join c in gServiceContext.CreateQuery("contact") on ((EntityReference)a["partyid"]).Id equals c["contactid"]

where ((EntityReference)r["new_distributorid"]).Id.Equals(lProfileProperty.PropertyValue)
select new
{
});

这就是我想要做的。

如果 r["new_distributorid"] == 1 我需要使用:

join c in gServiceContext.CreateQuery("contact") on ((EntityReference)a["partyid"]).Id equals c["contactid"]

如果 r["new_distributorid"] == 2 那么我需要使用:

join c in gServiceContext.CreateQuery("account") on ((EntityReference)a["partyid"]).Id equals c["accountid"]

如果 r["new_distributorid"] == 3 那么我需要使用:

join c in gServiceContext.CreateQuery("lead") on ((EntityReference)a["partyid"]).Id equals c["leadid"]

所以基本上是 new_distributor == 1 我需要使用某个连接,如果它是 2,我需要另一个连接,如果它是 3,我需要另一个连接。

这可能吗?如果是,我将如何设置它?

谢谢!

最佳答案

所有改变的只是一个字符串值,所以在开始定义查询之前只需确定该字符串值:

string tableName = "";

switch(r["new_distributorid"])
{
case(1):
tableName = "contact";
case(2):
tableName = "account";
case(3):
tableName = "lead";
}

string tableID = tableName + "id";

//...
join c in gServiceContext.CreateQuery(tableName)
on ((EntityReference)a["partyid"]).Id equals c[tableID]

关于c# - LINQ 查询中的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12608690/

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