gpt4 book ai didi

c# - 动态创建 CAML 查询

转载 作者:太空狗 更新时间:2023-10-30 01:08:51 27 4
gpt4 key购买 nike

我有一个搜索页面,之前在 SQL DB 上运行,但现在我们将后台转移到 SharePoint,我正在尝试根据用户从下拉框中选择的内容构建查询。

现有的 SQL 查询是:

string SQLquery "Select companyname,phone,email from Tab where Approved = 1"

If (country.selectedindex != "")
{
SQLquery += "AND (country LIKE '%" + country.SelectedValue + "%')"
}
If (functional.selectedindex != "")
{
SQL += "AND (country LIKE '%" + country.SelectedValue + "%')"
}
If (state.selectedindex != "")
{
SQL += "AND (state LIKE '%" + state.SelectedValue + "%') OR ( businessareaState like '%" + state.SelectedValue + "%'))"
}

这很简单,但我必须根据用户从下拉列表中选择的内容在 CAML 中创建相同的查询。不知怎的,我无法给它一个动态的形状,因为一旦你在其中添加和条件,结构就会在 CAML 中完全改变。

非常感谢您的帮助。

最佳答案

我开发了 C# 代码来构建动态查询。是这样的

 public string GenerateQuery(IList<CamlQueryElements> lstOfElement)
{
StringBuilder queryJoin = new StringBuilder();
string query = @"<{0}><FieldRef Name='{1}' /><Value {2} Type='{3}'>{4}</Value></Eq>";
if (lstOfElement.Count > 0)
{
int itemCount = 0;
foreach (CamlQueryElements element in lstOfElement)
{
itemCount++;
string date = string.Empty;
// Display only Date
if (String.Compare(element.FieldType, "DateTime", true) == 0)
date = "IncludeTimeValue='false'";
queryJoin.AppendFormat(string.Format(query, element.ComparisonOperators,
element.FieldName, date, element.FieldType, element.FieldValue));

if (itemCount >= 2)
{
queryJoin.Insert(0, string.Format("<{0}>", element.LogicalJoin));
queryJoin.Append(string.Format("</{0}>", element.LogicalJoin));
}
}
queryJoin.Insert(0, "<Where>");
queryJoin.Append("</Where>");
}
return queryJoin.ToString();
}

IList lstOfElement 是包含过滤器元素的自定义对象。您可以创建自己的对象并传递给此方法。

关于c# - 动态创建 CAML 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8267515/

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