我的azure cosmos db数据库中有此示例文档。
{
"partitionKey": "SonicTag",
"label": "SonicTag",
"name": "Kasi Tournaments",
"slug": "kasi-tournaments",
"a2AQuestionsCount": 0,
"iconUrl": null,
"id": "1af53736-c492-40bf-8ef7-dba2d17f6c17"
}
当我在数据浏览器上运行以下查询时,得到的正是我想要的(3个具有指定ID的文档)。
SELECT * FROM c where c.id in
("dc4201ff-35b8-4eda-b0a6-f9bc2bb93926",
"3389f2f2-33f3-4b08-8d32-4602071eae30",
"1af53736-c492-40bf-8ef7-dba2d17f6c17")
and c.partitionKey = "SonicTag"
例如,在我要查询所有标签的一个查询中,可以使用以下代码。
var feedIterator = Container.GetItemLinqQueryable<SonicTag>(true)
.Where(c => c.PartitionKey == nameof(SonicTag)
&& c.Label == nameof(SonicTag)).ToFeedIterator();
但是我不知道如何编写我的LINQ来获取信息
请注意,在必须构造此LINQ的方法上,我收到一个ID列表,并且必须获取所有具有这些ID的标签。确保该参数最多只能包含5个ID。
与此同时,我使用的显然是不好的解决方法
var tags = new List<SonicTags>();
foreach (var id in IDs)
{
tags.Add( Helper.ConvertStreamToObject( await Container.ReadItemStreamAsync(id, partitionKey)));
}
答案 0 :(得分:0)
请查看以下LINQ to SQL translation文档,该文档将帮助您构造正确的表达式。一个例子:
运算符在哪里,示例#2”
LINQ lambda表达式
input.Where(
family => family.parents[0].familyName == "Wakefield" &&
family.children[0].grade < 3);
SQL
SELECT *
FROM Families f
WHERE f.parents[0].familyName = "Wakefield"
AND f.children[0].grade < 3
答案 1 :(得分:0)
我通过使用Contains
的{{1}}方法找到了一个解决方案。下面是我的方法。
List<T>