---
title: "Skapa en IN fråga med linq"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/172811-skapa-en-in-fråga-med-linq"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "doggelito"
published: "2008-07-16T14:27:30.000Z"
updated: "2008-07-17T09:35:27.000Z"
replies: 3
views: 473
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/172811-skapa-en-in-fråga-med-linq"
---

# Skapa en IN fråga med linq

## #1 — doggelito, 2008-07-16T14:27Z

Hej, 
hämtar produkter utifrån kategori ur en xml-fil med linq.

```
public IOrderedEnumerable<XElement> GetProducts(string categoryid)
        {
            XElement tree = Load();

            var products = from tr in tree.Elements("products").Elements()
                     where ((string)tr.Attribute("categoryids")).Contains(categoryid)
                     orderby (string)tr.Attribute("name")
                     select tr;

            return products;
        }
```

Xmlfil:

```
<?xml version="1.0" encoding="utf-8" ?>
<products>
	<product categoryids="boende,hus" name="Prod 1" />
	<product categoryids="mat,fika" name="Prod 2" />
	<product categoryids="husvagn" name="Prod 3" />
</products>
```

Går det att bygga om *Contains* så att det blir som en *IN* istället (om man översätter det i sql)?

Problemet nu är att om jag skickar in kategori "hus" så ska Prod 1 hämtas men nu hämtas även Prod 3 för att hus finns i husvagn!

Permalänk: https://www.webforum.nu/p/172811

## #2 — spango, 2008-07-17T07:10Z

Du får dela upp strängen först, och sen kolla på varje enskild symbol. Typ:
*where Array.IndexOf(((string)tr.Attribute("categoryids")).Split(','), categoryid) \>= 0*

Permalänk: https://www.webforum.nu/p/2126074

## #3 — Nickemannen, 2008-07-17T08:37Z

Varför inte ha det såhär i xmlfilen.

```
<?xml version="1.0" encoding="utf-8" ?>
<products>
	<product categoryids="boende,hus" name="Prod 1" >
              <CategoryId value="Boende" />
              <CategoryId value="Hus" />
        </product>
</products>
```

Permalänk: https://www.webforum.nu/p/2126079

## #4 — doggelito, 2008-07-17T09:35Z

> **spango skrev:**
>
> Du får dela upp strängen först, och sen kolla på varje enskild symbol. Typ:
> where Array.IndexOf(((string)tr.Attribute("categoryids")).Split(','), categoryid) \>= 0

Snyggt! :bire

> **Nickemannen skrev:**
>
> Varför inte ha det såhär i xmlfilen.

Jag hade typ så från början men det strula så mycket när jag hämtade via bla. *Elements*, jag fick med undernoder som jag inte ville ha, så jag gjorde attribut istället!
Nu funkar det tipp topp! :)

Permalänk: https://www.webforum.nu/p/2126088

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/172811-skapa-en-in-fråga-med-linq
