var Charts = chartGroup
.Descendants("charts")
.Elements("chart")
.Where(x => x.Attribute("id").Value == chartId.ToString())
.Select(x => x.Attribute("name").Value).ToList();
这里我想对in
的字符串数组使用“in-clause”“(就像SQL中的Attribute("id").Value
子句一样):
像:
Where(x => x.Attribute("id").Value in ("1","2")
Where(x => x.Attribute("id").Value` in charIds[]
如何实现这个目标?
答案 0 :(得分:20)
如果数组中有一组值,则可以使用:
.Where(x => charids.Contains(x.Attribute("id").Value)
答案 1 :(得分:3)
您可以使用IEnumerable的包含方法:
var ids = new[]{"1", "2"};
Where(x=>ids.Contains(x.Attribute("id").Value));
<强>更新强>
此外,此代码将在SQL中的'in'语句中为IQueryable传输。
答案 2 :(得分:3)
您可以这样做:
var ids = new []{"id1","id2", ... };
var Charts = chartGroup.Descendants("charts")
.Elements("chart")
.Where(x => ids.Contains(x.Attribute("id").Value))
.Select(x => x.Attribute("name").Value).ToList();
答案 3 :(得分:1)
LINQ中的IN
为Enumerable.Contains
或Enumerable.Any
。以下是几种方法:
string[] strIDs = new[]{ "6", "7" };
int[] intIDs = new[]{ 1, 2 };
char[] charIds = new[]{ '4', '5' };
....
.Where(x => strIDs.Contains(x.Attribute("id"))
|| intIDs.Any(i => i.ToString() == x.Attribute("id"))
|| charIds.Any(c => c.ToString() == x.Attribute("id")));
答案 4 :(得分:0)
类似于......其中charIds.Contains(x.Attribute“id”.Value)
答案 5 :(得分:0)
SQL Where – In
的功能可以通过Lambda Expression轻松实现。
SQL查询-
Select Name,Id from Category Where Id In (71,72)
Lambda表达式–
List checkedRecords = new List { 71, 72 };
var Cs = Context.Categories.Where(c => checkedRecords.Contains(c.Id));
我希望这会有所帮助。
答案 6 :(得分:-1)
{{1}}