gpt4 book ai didi

vb.net - VB.NET 中的 lambda 表达式...我做错了什么?

转载 作者:行者123 更新时间:2023-12-02 01:04:29 25 4
gpt4 key购买 nike

当我运行这个 C# 代码时,没有问题...但是当我将其转换为 VB.NET 时,它可以编译,但由于表达式中不允许使用“CompareString”成员而崩溃...我觉得我错过了这里有一些关键...

private void PrintButton_Click(object sender, EventArgs e)
{
if (ListsListBox.SelectedIndex > -1)
{
//Context
using (ClientOM.ClientContext ctx =
new ClientOM.ClientContext(UrlTextBox.Text))
{
//Get selected list
string listTitle = ListsListBox.SelectedItem.ToString();
ClientOM.Web site = ctx.Web;
ctx.Load(site,
s => s.Lists.Where(l => l.Title == listTitle));
ctx.ExecuteQuery();

ClientOM.List list = site.Lists[0];

//Get fields for this list
ctx.Load(list,
l => l.Fields.Where(f => f.Hidden == false
&& (f.CanBeDeleted == true || f.InternalName == "Title")));
ctx.ExecuteQuery();

//Get items for the list
ClientOM.ListItemCollection listItems = list.GetItems(
ClientOM.CamlQuery.CreateAllItemsQuery());
ctx.Load(listItems);
ctx.ExecuteQuery();

// DOCUMENT CREATION CODE GOES HERE

}

MessageBox.Show("Document Created!");
}

}

但在 VB.NET 代码中,由于 ctx.Load() 方法中不允许使用“CompareString”成员,因此会出现此错误...

Private Sub PrintButton_Click(sender As Object, e As EventArgs)
If ListsListBox.SelectedIndex > -1 Then
'Context
Using ctx As New ClientOM.ClientContext(UrlTextBox.Text)
'Get selected list
Dim listTitle As String = ListsListBox.SelectedItem.ToString()
Dim site As ClientOM.Web = ctx.Web
ctx.Load(site, Function(s) s.Lists.Where(Function(l) l.Title = listTitle))
ctx.ExecuteQuery()

Dim list As ClientOM.List = site.Lists(0)

'Get fields for this list
ctx.Load(list, Function(l) l.Fields.Where(Function(f) f.Hidden = False AndAlso (f.CanBeDeleted = True OrElse f.InternalName = "Title")))
ctx.ExecuteQuery()

'Get items for the list
Dim listItems As ClientOM.ListItemCollection = list.GetItems(ClientOM.CamlQuery.CreateAllItemsQuery())
ctx.Load(listItems)

' DOCUMENT CREATION CODE GOES HERE

ctx.ExecuteQuery()
End Using

MessageBox.Show("Document Created!")
End If
End Sub

最佳答案

这可能是因为 VB 使用的是它自己的比较运算符实现,而不是字符串类中的实现,因此 Load 方法无法使用该表达式。

尝试使用 Equals 方法:

ctx.Load(site, Function(s) s.Lists.Where(Function(l) l.Title.Equals(listTitle)))

如果这不起作用,LINQ 中有一个 eq 运算符可以在表达式中使用,但我必须为此查找 VB 语法。

关于vb.net - VB.NET 中的 lambda 表达式...我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413046/

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