gpt4 book ai didi

LINQ(到实体)- 使用整数过滤项目

转载 作者:行者123 更新时间:2023-12-02 10:52:31 26 4
gpt4 key购买 nike

使用 LINQ to Entities,如何确定整数列表中的任何项目是否存在于逗号分隔的整数字符串中?

例如,我想写如下(逻辑上):

collection.Where(collection.DelimitedStringOfInts.Contains(listOfInts.AnyOfThem))

另外,我应该提到,我使用 LINQ 方法链接来执行此操作,并将分隔字符串作为实体的一部分 -

var listOfInts = GetListOfInts();
var query = from x in Db.Items select x;
if (listOfInts != null && listOfInts.Count() > 0)
{
query = query.Where(x => x.DelimitedStringOfInts.Contains(listOfInts.AnyOfThem));
}

更新:
使用 Alex 的引用文章,我实现了一个可行的解决方案,如下所示:

var query = from x in Db.Items select x;
var listOfInts = GetListOfInts();
if (listOfInts != null && listOfInts.Any())
{
//"ToListOfStrings" is a simple extension method I wrote to create a List<string> from a List<int>
var delimitedIds = listOfInts.ToListOfStrings(',');
query = query.Where(
BuildOrExpression<DatabaseItem, string>(x => x.DelimitedStringOfInts, delimitedIds)
);
}

需要更新文章中引用的“BuildOrExpression”。 “等于”运算符必须更改为“包含”运算符。

var contains = values.Select(value =>
(Expression)Expression.Call(
valueSelector.Body,
typeof(string).GetMethod("Contains"),
Expression.Constant(
value,
typeof(TValue)
)
)
);

最佳答案

看看这个 tip ,这并不完全是您所要求的,但我认为您可以对其进行调整以获得您想要的。

亚历克斯

关于LINQ(到实体)- 使用整数过滤项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1676972/

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